给定数字列表和numbs,创建一个新的列表,这些相同的数字增加5。将此新列表保存到变量new列表中。
numbs = [5, 10, 15, 20, 25]
newlist=[]
for i in numbs:
newlist.append(i+5)
print(newlist)
但我在这里使用了累加器模式
输出:[10, 15, 20, 25, 30]
什么是正确的代码,没有使用累加器模式,我尝试了这个
numbs = [5, 10, 15, 20, 25]
for i in numbs:
numbs.append(i+5)
print(numbs)
我得到了这个错误
TimeLimitError: Program exceeded run time limit. on line 5
帮助,感激
2条答案
按热度按时间hsvhsicv1#
在第二次尝试中,您没有创建新列表,而是在迭代时将值附加到原始列表上。你迭代过的数组在每一步的大小都在增加,这意味着迭代永远不会结束,这就是为什么它会导致
TimeLimitError
。我看不出累加器模式有什么问题,但作为替代方案,你可以复制原始数组,按索引遍历,并在每个现有元素上加5。
输出量
请注意,你不能像这样复制一个数组
newlist = numbs
,因为这两个变量将引用同一个对象,而对newlist
的更改也会改变原始数组。pbpqsu0x2#
你正在更改(扩展)一个List,同时迭代相同的东西,所以代码永远不会停止!
用途:
这是可行的,因为您创建了一个新的List(右侧表达式称为Comprehension),然后将这个新List分配给名称numbs。