python - 如何使用 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 循环浓缩成一个,我很感兴趣?
谢谢你的帮助^^
解决方案
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)
这样做的好处是它是一个生成器,因此它不会创建任何(可能很大的)中间列表。
推荐阅读
- javascript - moment.utc(date) 和 moment(date).utc() 之间的区别
- django - 如何将上传的文件保存到模型并在模板中提供它们?
- flutter - 在画布上颤动可编辑文本
- java - 一旦我的窗口显示在 linux/mac 中,如何确保用户不能做任何其他事情
- file - Windows Powershell:显示文件路径以及名称和 LastWriteTime
- amazon-web-services - 如何正确将 tsv 导入雅典娜
- java - Java ModelMapper - 将实体展平为整数数组
- facebook - Facebook 共享 URL 未使用查询参数调用
- java - 使用Gson序列化器时如何更改Spring Boot中请求参数的名称?
- c# - 在 C# 中将平面数据集合更改为嵌套树层次结构