此代码有什么问题?我一定缺少一些琐碎的东西。每当我尝试运行它时,它会暂时不执行任何操作,然后输出“ 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)
答案 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)