Python 将x中y的实例更改为z(其中x是列表)

Python 将x中y的实例更改为z(其中x是列表),python,Python,我编写了一个函数,将x中y的所有实例都更改为z(其中x是一个列表),但不知何故,我的代码不起作用。结果应该是[1,'zzz',3,1,'zzz',3]。我在下面附上了我的代码,非常感谢您的帮助。提前谢谢 x = [1, 2, 3, 1, 2, 3] def changeThem(x,y,z): replace = {y : z} for key, value in replace.items(): x = x.replace(key, value) pr

我编写了一个函数,将x中y的所有实例都更改为z(其中x是一个列表),但不知何故,我的代码不起作用。结果应该是[1,'zzz',3,1,'zzz',3]。我在下面附上了我的代码,非常感谢您的帮助。提前谢谢

x = [1, 2, 3, 1, 2, 3]

def changeThem(x,y,z):
    replace = {y : z}
    for key, value in replace.items():
        x = x.replace(key, value)
    print(x)
changeThem(x,2,'zzz')


列表没有
.replace()
方法。下面呢

x = [1, 2, 3, 1, 2, 3]

def changeThem(x,y,z):
    return [z if i == y else i for i in x]

print(changeThem(x, 2, 'zz'))

该函数只包含一行,因此定义该函数甚至可能没有必要。但我会留下它,以防您想多次调用它。

您的代码会生成一个
属性错误。这是因为
list
没有
replace
方法
str
有一个
replace
方法,所以这可能是您感到困惑的地方

您可以通过非常简单的列表理解来实现这一点:

x = [z if e == y else e for e in x]
基本上,上述列表说明:

对于列表x中的每个值e,如果元素等于y,则将其替换为z。否则,只需将元素保留在那里

它也相当于以下内容:

result = []
for e in x:
    if e == y:
        result.append(z)
    else:
        result.append(x)

正如其他议员所解释,;列表没有替换函数,但这里有另一个提示:通常,当您想要转换/操作列表时,您需要迭代该列表项。逐项阅读,做条件逻辑或使用列表理解、映射或其他pythonic方式。