【问题标题】:When to use 'For Loop vs List Comprehension' to create New Lists? [duplicate]何时使用“For Loop vs List Comprehension”创建新列表? [复制]
【发布时间】:2019-03-17 07:05:33
【问题描述】:

这里是 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 list-comprehension


    【解决方案1】:

    使用列表推导有哪些优势?首先,您将 3 行代码缩减为 1 行,任何了解列表推导式的人都可以立即识别出来。其次,第二个代码更快,因为 Python 将首先分配列表的内存,然后再将元素添加到其中,而不必在运行时调整大小。它还可以避免调用“append”,这可能很便宜,但可以加起来。最后,使用推导式的代码被认为更“Pythonic” —— 更符合 Python 的风格指南。 Python’s List Comprehensions: Uses and Advantages, Luciano Strika

    列表理解:

    • 更容易阅读
    • 更快,因为之前的内存分配

    for循环:

    • 更灵活

    【讨论】:

    • 谢谢伙计;你已经重申了前面问题中的答案。 “如果迭代是为了它的副作用而进行的(打印每个新添加的列表元素),那么循环会更清晰。如果执行迭代是为了构建一个复合值,那么列表推导通常更具可读性。” @Steven D. Majewski
    猜你喜欢
    • 2021-08-06
    • 2017-11-09
    • 2011-06-16
    • 1970-01-01
    • 2023-02-17
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多