这个python代码怎么了? (初学者的问题)

时间:2020-05-24 17:29:23

标签: python

此代码有什么问题?我一定缺少一些琐碎的东西。每当我尝试运行它时,它会暂时不执行任何操作,然后输出“ Killed”。我希望它接受列表中的每个元素,在其中添加“ x”,然后将此新元素附加到列表中,以便输出看起来像这样:

['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)

6 个答案:

答案 0 :(得分:1)

您要遍历列表,因此要追加到列表中,因此,每次执行“前进”操作时,都会添加另一个“步骤”以待以后执行,因此最终以['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)

答案 1 :(得分:0)

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

print(list)

由于您要在循环中追加内容,因此您经常会遇到内存错误。上面的代码可能会对您有所帮助。

答案 2 :(得分:0)

追加到list2之后,我将其添加到原始list1中,并获得了所需的结果。

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

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

print(list1+list2)  

答案 3 :(得分:0)

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

答案 4 :(得分:0)

一种更清洁的方法是使用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)

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

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

答案 5 :(得分:0)

不要使用list,它是一个关键字(例如,请参阅我在第2行中使用的复制功能)

您要在迭代时追加到列表,这样会导致无休止的循环

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)
相关问题