My goal个
我的问题是关于列表理解,它不会将元素按原样放入结果列表中(这将导致嵌套列表),但会将结果extends
放入平面列表中.所以我的问题是not about flattening a nested list,但如何得到一个扁平的列表,而avoiding to make a nested list首先是.
Example个
考虑一个Have类实例,它的属性包含一系列整数:
class Foo:
def __init__(self, l):
self.l = l
foo_0 = Foo([1, 2, 3])
foo_1 = Foo([4, 5])
list_of_foos = [foo_0, foo_1]
现在我想要一个列表,列出Foo
的所有实例中的所有整数.我使用extend
的最佳解决方案是:
result = []
for f in list_of_foos:
result.extend(f.l)
不出所料,result
现在是[1, 2, 3, 4, 5]
.
Is there something better? For example list comprehensions?个
因为我预计列表理解会更快,所以我在寻找一种用列表理解来获得期望结果的方法.我最好的方法是获得一个列表列表(‘嵌套列表’),然后再次扁平化这个列表--这似乎很奇怪:
result = [item for sublist in [f.l for f in list_of_foos] for item in sublist]
What functionaly I'm looking for个
result = some_module.list_extends(f.l for f in list_of_foos)
Questions and Answers I read before个
我很确定这个问题是有答案的,但在我的搜索过程中,我只找到了list.extend and list comprehension个出现嵌套列表的原因不同的地方;以及python list comprehensions; compressing a list of lists?个关于避免嵌套列表或如何将其扁平化的答案.