繁体   English   中英

这个 python 代码有什么问题? (初学者的问题)

[英]What's wrong with this python code? (beginner's question)

这段代码有什么问题? 我一定错过了一些微不足道的东西。 每次我尝试运行它时,它都会有一段时间什么都不做,然后输出“Killed”。 我希望它获取列表中的每个元素,将“x”添加到它,然后将 append 这个新元素添加到列表中,这样 output 将如下所示:

['a', 'b', 'c', 'd', 'ax', 'bx', 'cx', 'dx']

到目前为止我的代码:

list = ['a', 'b', 'c', 'd']

for element in list:
    element = element + "x"
    list.append(element)

print(list)

当您遍历它时,您将附加到您的列表中,因此每次您向前迈出“一步”时,您都会添加另一个“步骤”以便稍后采取,因此您最终会得到['a', 'b', 'c', 'd', 'ax', 'bx', 'cx', 'dx', 'axx', 'bxx'...] 出于与此类似的许多原因,一般规则是您应该避免在迭代列表时修改列表。

试试这个

list_1 = ['a', 'b', 'c', 'd']

list_2 = [elem + 'x' for elem in list_1]

result = list_1 + list_2

print(result)
list = ['a', 'b', 'c', 'd']
list2 = []
for element in list:
    list2.append(element + "x")
list.extend(list2)

print(list)

由于您在循环中附加,因此您曾经得到 memory 错误。 上面的代码可能会对你有所帮助。

附加到 list2 后,我只是将其添加到原始 list1 中,并得到了所需的结果。

list1 = ['a', 'b', 'c', 'd']
list2 = []

for x in list1:
    list2.append(x+'x')

print(list1+list2)  

这段代码有什么问题? 答案是您创建了一个无限循环,因为您在迭代时不断地将元素添加到列表中。

一种更简洁的方法是使用extend

所以你可以做这样的事情:

l = ['a','b','c','d'] # DO NOT USE list as a variable name, it is a keyword in python

l.extend([element + 'x' for element in l])

print(l)

此外,您的代码不起作用的原因是因为您实际上是在创建一个无限循环,因为您的循环不断将元素添加到您正在迭代的列表中。

以我上面提到的方式使用扩展,将创建一个包含新项目的临时列表,然后将临时列表中的每个项目添加到实际列表中。

不要使用list ,它是一个关键字(例如,请参阅我在第 2 行中使用的副本 function)

您在迭代时附加到列表,因此这将导致无限循环

base_list = ['a', 'b', 'c', 'd']
new_list = list.copy(base_list)
for element in base_list:
    newelement = element + 'x'
    new_list.append(newelement)
print(new_list)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM