python-3.x 给定数字列表numbs,创建一个新的列表,这些相同的数字增加了5,将这个新列表保存到变量newlist

2cmtqfgy  于 2023-06-25  发布在  Python
关注(0)|答案(2)|浏览(117)

给定数字列表和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

帮助,感激

hsvhsicv

hsvhsicv1#

在第二次尝试中,您没有创建新列表,而是在迭代时将值附加到原始列表上。你迭代过的数组在每一步的大小都在增加,这意味着迭代永远不会结束,这就是为什么它会导致TimeLimitError
我看不出累加器模式有什么问题,但作为替代方案,你可以复制原始数组,按索引遍历,并在每个现有元素上加5。

import copy

numbs = [5, 10, 15, 20, 25]
newlist = copy.copy(numbs)

for i in range(len(newlist)):
    newlist[i] += 5
    
newlist

输出量

[10, 15, 20, 25, 30]

请注意,你不能像这样复制一个数组newlist = numbs,因为这两个变量将引用同一个对象,而对newlist的更改也会改变原始数组。

pbpqsu0x

pbpqsu0x2#

你正在更改(扩展)一个List,同时迭代相同的东西,所以代码永远不会停止!
用途:

numbs = [5, 10, 15, 20, 25]

numbs = [x+5 for x in numbs]

print(numbs)

这是可行的,因为您创建了一个新的List(右侧表达式称为Comprehension),然后将这个新List分配给名称numbs。

相关问题