gpt4 book ai didi

python - 带范围的for循环只取最后一个元素

转载 作者:太空宇宙 更新时间:2023-11-04 08:46:32 25 4
gpt4 key购买 nike

我有一个二维字符串数组,我从中删除了某些元素(那些包含“#”字符的元素)。当我从循环内部打印 lista 时,它会打印:

['call', '_imprimirArray']
['movl', '24', '%2', '%3']
['movl', '%1', '%2']
['call', '_buscarMayor']
['movl', '%1', '4', '%3']
['movl', '$LC1', '%2']
['call', '_printf']
['movl', '$LC2', '%2']
['call', '_system']
['movl', '$0', '%2']
['movl', '-4', '%2', '%3']

但是当我将每一行附加到另一个二维数组时,只会分配最后一个元素:

['movl', '-4', '%2', '%3'],
['movl', '-4', '%2', '%3'],
['movl', '-4', '%2', '%3'],
['movl', '-4', '%2', '%3'],
['movl', '-4', '%2', '%3'],
['movl', '-4', '%2', '%3'],
['movl', '-4', '%2', '%3'],
['movl', '-4', '%2', '%3'],
['movl', '-4', '%2', '%3'],
['movl', '-4', '%2', '%3'],
['movl', '-4', '%2', '%3']

这是循环:

def quitarEtiquetas(labels, programa):    
lista = []
temp = []

for i in range(0, len(programa)):
del lista[:]
for j in range(0, len(programa[i])):
if(programa[i][j].find('#') != -1):
labels.append([programa[i][j].replace('#', ''), i])
else:
lista.append(programa[i][j])
print(lista)
temp.append(lista)

最佳答案

您将同一行多次附加到 temp,而每次迭代都只是从中删除项目。而不是 del lista[:] 只需将一个新列表分配给变量:lista = [] 这样先前添加的行中的内容就不会被覆盖。

实际上您正在执行以下操作:

>>> lista = []
>>> temp = []
>>> lista.append('foo')
>>> temp.append(lista)
>>> temp
[['foo']]
>>> del lista[:]
>>> temp
[[]]
>>> lista.append('bar')
>>> temp.append(lista)
>>> temp
[['bar'], ['bar']]

关于python - 带范围的for循环只取最后一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40080593/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com