从具有列表理解的项目列表中获取所有子项目

Getting all subitems from a list of items with list comprehension

我有一个数据类 foo,它有一个成员 item_li: list[item],item 是一个数据类,它有一个成员 sub_item_li: list[sub_item] 我想从 foo 的方法中 return list[sub_item]。我主要是在寻找具有列表理解力的解决方案。 我已经使用以下列表理解将其分为两行:

sub_item_li_li: list[list[sub_item]] = [sub_item_li for sub_item_li in [item.sub_item_li for item in self.item_li]] 
all_sub_item_li: list[sub_item] = [sub_item for sublist in sub_item_li_li for sub_item in sublist] 
return all_sub_item_li

有没有一种无需先创建列表列表即可实现的方法?

很难帮助解决确切的问题,因为我们不知道 itemsub_item 是如何实现的。因此,我们可以采取更通用的方法:将此视为列表列表的问题,我们希望使用 list 理解来展平该列表。

所以像这样的东西应该适用于:


# Based on problem statmenet, this is a DOUBLY nested list. So
# list of one item, each item containing a list of another item.
# Let's try to apply that as generically as possible.

aa = [1, 2, 3]
bb = [4, 5, 6]

a = [aa, bb]

# But what are we working with here?
print(a)
# [[1, 2, 3], [4, 5, 6]]

# flatten out list of lists into one master list
result = [sube for e in a for sube in e]

print(result)
# [1, 2, 3, 4, 5, 6]

Oli 回答了问题:

return [sub_item for item in self.item_li for sub_item in item.sub_item_li]