关于python:如何使用for循环从对象列表中迭代字段?

How to iterate on a field from a list of objects using for loop?

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

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

所以像这样:

1
2
3
4
5
6
7
8
9
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循环凝结成一个?

谢谢你的帮助^^


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

1
2
3
4
5
from itertools import chain

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

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


如果您希望一次遍历所有对象的列表,请尝试以下操作:

1
2
for i in [o.list for o in objects]:
    print(i)