我有一个嵌套的 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/更好的做法吗?
最佳答案
以下应该有效:
order_ids = [str(order.get('Order ID')) for i in list_of_orders for order in i.get('Orders')]
嵌套 for
表达式的顺序对某些人来说是违反直觉的,因为它并不真正符合自然语言范围。
它可能比基于循环的方法快一点,但它具有相同的渐近时间复杂度。虽然推导式是 Pythonic 的,但 Zen of Python声明:“可读性很重要”!所以我会坚持使用循环。
关于python - 将嵌套 for 循环转换为嵌套列表理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54344595/