首页 > 解决方案 > 如何使用 for 循环从对象列表中迭代一个字段?

问题描述

抱歉标题不好,但我不知道如何更好地表述它^^。

我想要做的是迭代一个对象列表,然后迭代一个列表,它是每个对象的成员


所以是这样的:

class FooObj:
    def __init__(self):
        self.list = [1, "Hello", 3.4] #some list thats unique for each object

objects = [...] # some list of FooObj's

for o in objects:
   for e in o.list:
        # Do something for each list element

这就是我“传统”的做法。如果有办法将两个 for 循环浓缩成一个,我很感兴趣?

谢谢你的帮助^^

标签: pythonpython-3.x

解决方案


itertools.chain.from_iterable如果您真的不在乎FooObj元素来自哪个,则可以使用:

from itertools import chain

for e in chain.from_iterable(o.list for o in objects):
    # Do something for each element
    print(e)

这样做的好处是它是一个生成器,因此它不会创建任何(可能很大的)中间列表。


推荐阅读