这可能已经被回答了,但是我在搜索中找不到。
在Python 3中,我发现自己编写的代码看起来像这样:
def func():
for item in list_A:
if item == 'duck': list_B.append(0)
elif item == 'goose': list_B.append(1)
else: list_B.append(item)
list_A = list_B
我的意图是有条件地更改list_A中的值。例如:
list_A = ['duck', 'duck', 'goose', 'duck', 'chicken']
func(list_A) -> [0, 0, 1, 0, 'chicken']
不过,理想情况下,我希望这样做而无需创建第二个列表。我想找到类似以下的伪代码:
list_A = [(if item == 'duck': 0, elif item == 'goose': 1, else: item) for item in list_A]
我的直觉是上面的方法不起作用,因为您无法在遍历列表时对列表进行变异(?),但是如果有人比我的原始方法要好,我将非常有兴趣了解它。谢谢!
迭代时替换列表中的元素很好。问题是结构修改-添加元素,删除元素或以其他方式导致元素移位的操作。
也就是说,创建第二个列表通常更容易正确,而且通常更快。
如果您仍然想使用变异方法,则可以采用以下一种方法:
for i, item in enumerate(l):
if item == 'duck':
l[i] = 0
elif item == 'goose':
l[i] = 1
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句