为什么我的列表没有被python覆盖? [重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么我的列表没有被python覆盖? [重复]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

List = ["I?", "Can", "!Not", "Do.", "It"]
l=[]
BadChars = ["?", "!", "."]
for i in List:
    for j in BadChars:
        if j in i:
            i=i.strip(j)
    l.append(i)
print(l)
print(List)

输出:

正如您在输出中看到的那样,即使写入i = i.strip(j),列表也不会被覆盖。怎么了?提前致谢。我正在学习python,所以这个问题可能很愚蠢。当我在Stack Overflow中解决子列表中的Change Character时,这个问题在我脑海中浮现。我的问题是“为什么List和l有不同的值?”

答案

由于两个原因,你的列表没有被“覆盖”,第一个是strip返回一个新字符串。第二个是当你做i = i.strip(whatever)时,你没有覆盖i指向的值,而是将i指向一个新值。因此,i指向的旧值的其他引用不会受到影响,因为您根本没有更改它。

另一答案

要覆盖,请使用索引:

List = ["I?", "Can", "!Not", "Do.", "It"]
l=[]
BadChars = ["?", "!", "."]
for i in range(len(List)):
    for j in BadChars:
        if j in List[i]:
            List[i] = List[i].strip(j)
    l.append(List[i])
print(l)
print(List)

以上是关于为什么我的列表没有被python覆盖? [重复]的主要内容,如果未能解决你的问题,请参考以下文章

在python中复制列表[重复]

在python中复制列表[重复]

添加行而不覆盖(Python)[重复]

Python复制列表问题[重复]

连接或扩展字典列表覆盖到最后一个列表

python 列表删除元素问题?