将嵌套的for循环转换为嵌套列表理解

时间:2019-01-24 10:35:26

标签: python for-loop nested list-comprehension

我有一个嵌套的for循环,但是我一辈子都无法弄清楚如何将其转换为嵌套的列表理解。我似乎不太了解嵌套列表组合的工作原理,因此,如果您还可以添加说明,那将非常有帮助。

这是我尝试通过循环提取的数据结构(用于市场营销API):

list_of_orders = [{'Campaign ID': 1234, 'Orders': [{'Order ID': 0001, ...}, {'Order ID': 0002, ...}, ...]}, {'Campaign ID': 5678, 'Orders': [{...}, ...]}, ...]

这是循环:

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

我如何-并且应该-将其转换为列表组件?是更快/更pythonic /更好的做法吗?

2 个答案:

答案 0 :(得分:3)

以下方法应该起作用:

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

嵌套for表达式的顺序对某些人来说是违反直觉的,因为它实际上并不符合自然语言范围。

它可能比基于循环的方法稍快一些,但是它具有相同的渐近时间复杂度。虽然理解力是Python的,但Zen of Python指出:“可读性很重要”!所以我会坚持循环。

答案 1 :(得分:0)

  

我如何(应该)将其转换为列表组件?是更快/更pythonic /更好的做法吗?

是的。不,不。