对于自定义类,Python 相当于 C++ begin() 和 end()

2024-03-05

假设您有一个字典,其键是整数。这些值也是字典,其键是字符串,其值是 numpy 数组。 就像是:

custom = {1: {'a': np.zeros(10), 'b': np.zeros(100)}, 2:{'c': np.zeros(20), 'd': np.zeros(200)}}

我在代码中经常使用这个自定义数据结构,每次我需要迭代这个结构的 numpy 数组中的每一行时,我都必须这样做:

for d, delem in custom.items():
    for k, v in delem.items():
        for row in v:
            print(row)

是否可以将这种行为封装在函数中à laC++,您可以在其中实际实现自定义begin() and end()?此外,迭代器还应该具有有关其相应字典中的键的信息。我设想的是这样的:

for it in custom:
    d, e, row = *it
    # then do something with these

有多种方法可以做到这一点。yield可能是最简单的,因为它为您完成了构建迭代器类的繁重工作。

def custom_dict_iter(custom):
    for d, delem in custom.items():
        for k, v in delem.items():
            for row in v:
                yield d, k, row

for d, k, row in custom_dict_iter(my_custom_dict):
    print(d, k, row)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对于自定义类,Python 相当于 C++ begin() 和 end() 的相关文章