为什么我的列表没有被python覆盖?

为什么我的列表没有被python覆盖?,python,list,Python,List,输出: 正如您在输出中看到的,即使写入的i=i.stripj,列表也没有被覆盖。发生了什么事?提前谢谢。我刚开始学习python,所以这个问题可能很愚蠢。 当我在堆栈溢出中解决子列表中的更改字符时,我想到了这个问题。我的问题是为什么列表和l的值不同?要覆盖,请使用索引: List = ["I?", "Can", "!Not", "Do.", "It"] l=[] BadChars = ["?", "!", "."] for i in List: for j in BadChars:

输出:

正如您在输出中看到的,即使写入的i=i.stripj,列表也没有被覆盖。发生了什么事?提前谢谢。我刚开始学习python,所以这个问题可能很愚蠢。
当我在堆栈溢出中解决子列表中的更改字符时,我想到了这个问题。我的问题是为什么列表和l的值不同?

要覆盖,请使用索引:

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)

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

代码不是在做您想要的事情吗?l现在没有你想排除的字符了嗯。。。您打印了l,但它没有您不喜欢的列表输入中的标点符号。你以为会发生什么?您想更改列表吗?几分钟前发布了类似的问题。这似乎是一个家庭作业,当我在堆栈溢出中解决子列表中的更改字符时,我想到了这个问题。我的问题是为什么List和l有不同的值?。这不是复制的问题或重复的问题。两者都不同。但使用的列表是相同的,当你在列表中循环使用for 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)