我有这两个版本来回答同一个问题:“制作一个新的列表,其中包含该列表中小于5的所有元素,并打印出这个新列表。”它们是相同的,但只是在行的顺序上不同,这行的结果不同。怎么会?提前谢谢!你知道吗
#Ver1
a = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
new_a = []
for element in a:
if element < 5:
new_a.append(element)
print(new_a)
#Ver2
a = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
for element in a:
if element < 5:
new_a = []
new_a.append(element)
print(new_a)
第二个版本每次遇到小于
5
的元素时,都会创建一个新的空new_a
列表,从而有效地删除所有以前的条目。更有效的方法是使用列表理解在第二个版本中,在每个迭代中设置list
new_a = []
。将其设置为[]
,然后append
元素。你知道吗在第一个版本中,您将继续附加到上一个迭代。你知道吗
在#1中,您定义一个结果列表,然后按顺序附加到该列表。你知道吗
在#2中,为每个循环定义一个新的空列表。你知道吗
这样做的效果是,第二个解决方案不存储来自
for
循环的先前迭代的结果。你知道吗有几种方法可以提高代码的可读性:
发生器功能
定义一个生成器函数并删除样板文件列表创建代码。你知道吗
理解力
您可以将此设置为惰性并迭代生成器:
或者您可以使用列表:
相关问题 更多 >
编程相关推荐