【发布时间】:2020-11-09 01:52:15
【问题描述】:
您好,我找不到使用方括号表示理解列表与使用 list() 之间的区别
是否存在性能/内存分配差异?
(对于 set 和 dict 相同的问题)
input = [1, 2, 3, 4]
B = [a * 2 for a in input if a > 1]
C = list(a * 2 for a in input if a > 1)
B_set = {str(a) for a in input if a > 1}
C_set = set(str(a) for a in input if a > 1)
B_dict = {str(a):a for a in input if a > 1}
C_dict = dict(str(a):b for a,b in input if a > 1) # NOT LEGAL
感谢您的帮助
【问题讨论】:
-
好吧,
list()语法是创建一个生成器,而不是一个列表,然后list()函数会将生成器变成一个列表。 -
是的,存在性能差异。请参阅this 帖子。
-
@OlvinRoght 当然可以。
-
@OlvinRoght 结果是一样的;在每种情况下,到达那里的路径都大不相同。
-
打个比方,列表推导直接调用
input.__next__。list()必须调用生成器的__next__方法,然后再调用input.__next__。
标签: python list-comprehension dictionary-comprehension set-comprehension