社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

Challa Sai Bhanu Teja • 5 年前 • 1351 次点击  

这个问题已经有了答案:

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)

输出:

enter image description here

正如您在输出中看到的,即使写入i=i.strip(j),列表也不会被覆盖。发生什么事了?事先谢谢。我刚开始学巨蟒,所以这个问题可能很愚蠢。 这个问题在我解决堆栈溢出子列表中的更改字符时在我的头脑中提出。我的问题是“为什么list和l有不同的值?”

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/38266
 
1351 次点击  
文章 [ 3 ]  |  最新文章 5 年前
Bryce Kille
Reply   •   1 楼
Bryce Kille    6 年前

您所迭代的循环 参考文献 每个列表元素。如果您真的想修改条目,您需要遍历索引并使用这些索引直接修改列表。

MrGeek
Reply   •   2 楼
MrGeek    6 年前

要覆盖,请使用索引:

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)
ivissani
Reply   •   3 楼
ivissani    6 年前

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