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

问题描述 投票:-4回答:2

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

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有不同的值?”

python list
2个回答
0
投票

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


2
投票

要覆盖,请使用索引:

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)
© www.soinside.com 2019 - 2024. All rights reserved.