这个问题在这里已有答案:
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)