Python 何时使用';对于循环与列表理解';创建新列表?

Python 何时使用';对于循环与列表理解';创建新列表?,python,list-comprehension,Python,List Comprehension,这里是Python初学者;在Python3中,想知道使用这两种技术的正确时机: 1) For循环 l_1=[1, 2, 3] l_2=list() for i in range(len(l_1)): l_2.append(l_1[i]) print(l_2) #[1, 2, 3] 2) 列表理解 l_1=[1, 2, 3] l_3=[l_1[i] for i in range(len(l_1))] print(l_3) #[1, 2, 3] 从一开始它看起来完全一样。两者之间有

这里是Python初学者;在Python3中,想知道使用这两种技术的正确时机: 1) For循环

l_1=[1, 2, 3]
l_2=list()
for i in range(len(l_1)):
    l_2.append(l_1[i])
print(l_2)   #[1, 2, 3]
2) 列表理解

l_1=[1, 2, 3]
l_3=[l_1[i] for i in range(len(l_1))]
print(l_3)  #[1, 2, 3]
从一开始它看起来完全一样。两者之间有什么内在的区别吗

使用列表理解的优点是什么?首先,您将3行代码缩减为一行,任何理解列表理解的人都可以立即识别。其次,第二个代码更快,因为Python将在向列表中添加元素之前首先分配列表的内存,而不必在运行时调整大小。它还可以避免调用“append”,这可能很便宜,但会累加。最后,使用理解的代码被认为更“Pythonic” — 更好地符合Python的风格指南

列表理解:

  • 易读
  • 更快,因为之前的内存分配
For循环:

  • 更灵活

谢谢你,伙计;你已经重复了前面问题中的回答。“如果迭代是为了其副作用(打印每个新添加的列表元素)而进行的,则循环更清晰。如果迭代是为了构建复合值而执行的,则列表理解通常更具可读性。”作者@Steven D.Majewski