Python 将嵌套for循环转换为嵌套列表

Python 将嵌套for循环转换为嵌套列表,python,for-loop,nested,list-comprehension,Python,For Loop,Nested,List Comprehension,我有一个嵌套的for循环,但我一辈子都不知道如何将其转换为嵌套列表。我似乎不明白嵌套列表comp是如何工作的,所以如果您也能添加解释,那将非常有帮助 以下是我试图通过循环提取的数据结构(用于营销API): 以下是循环: order_ids = [] for i in list_of_orders: for order in i.get('Orders'): order_ids.append(str(order.get('Order ID'))) 我应该如何将其转换为列表

我有一个嵌套的for循环,但我一辈子都不知道如何将其转换为嵌套列表。我似乎不明白嵌套列表comp是如何工作的,所以如果您也能添加解释,那将非常有帮助

以下是我试图通过循环提取的数据结构(用于营销API):

以下是循环:

order_ids = []
for i in list_of_orders:
    for order in i.get('Orders'):
        order_ids.append(str(order.get('Order ID')))

我应该如何将其转换为列表comp?这是更快/更具pythonic/更好的做法吗?

以下方法应该有效:

order_ids = [str(order.get('Order ID')) for i in list_of_orders for order in i.get('Orders')]
对于一些人来说,嵌套的
for
表达式的顺序是违反直觉的,因为它实际上并不符合自然语言的范围

它可能比基于循环的方法快几分钟,但它具有相同的渐近时间复杂性。虽然理解是python式的,但声明:“可读性很重要”!所以我会坚持循环

我怎么能——我应该——把它转换成一个列表?那是更快的/更像蟒蛇的/更好的练习吗


对。否。否。

为什么这被认为是重复的?这是关于嵌套列表理解,而不是一般的列表理解。非常感谢,这非常有用!我想在这个例子中,我也得到了我不了解的嵌套列表组件(普通列表组件很好,我很喜欢它们,并且经常使用它们!)。因此,如果我理解正确,您要检索的应该是第一个(order.get('order ID'),然后逐级查找I…for order…-->?
order_ids = [str(order.get('Order ID')) for i in list_of_orders for order in i.get('Orders')]