在Python列表中进行就地修改

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Python列表中进行就地修改相关的知识,希望对你有一定的参考价值。

我想就地更改列表,以便如果列表为l1 = [0, 1, A, B],那么我可以将字母值替换为数字。

我尝试使用以下代码:

for x in l1:
    if x == 'A':
        x = 10

但是,当我再次查看列表时,它仍然相同,并且A未被更改为10。为什么此代码不起作用?

我也尝试使用索引,但是那也不起作用。

for i in range(len(l1)):
     if l1[i] == 'A':
        l1[i] = 10
答案

在Python中,事物总是按值传递。 for循环中的“ x”变量是列表中元素的副本,而不是列表元素的指针/引用。

您可以通过直接建立索引来更改列表的值。

实现此目的的一种方法如下。

对于i,x inumerate(l1):如果x =='A':l1 [i] = 10

假设变量指向值'A'!

以上是关于在Python列表中进行就地修改的主要内容,如果未能解决你的问题,请参考以下文章

如何使用在 Python 中就地修改的 .NET 方法?

如何在 Python 中就地对整数数组进行排序?

Python写代码的用法建议

删除列表列表中的第一项 - 制作副本而不是就地修改

如何通过就地过滤来修改python集合?

Python:就地操作列表[重复]