python - 为什么这个参数列表在Python中没有改变?

标签 python python-3.x list variable-assignment

我创建了一个函数 f,它使用二维列表作为参数,但在此函数之后列表根本没有改变。 如以下代码:

def f(t: [[int]]):
    for eachrow in t:
        eachrow = eachrow[1:]
        eachrow.append(0)

A = [[2, 10, 0], [3, 1, 2], [3, 2, 1]]

f(A)

print(A)  # -> [[2, 10, 0], [3, 1, 2], [3, 2, 1]]

最佳答案

eachrow = everyrow[1:] 中分配给 eachrow 会覆盖它。因此,要删除第一个元素,您可以使用 del 代替,或者 row.popslice assignment .

def f(t):
    for row in t:
        del row[0]  # OR row.pop(0) OR row[:] = row[1:]
        row.append(0)

A = [[2, 10, 0], [3, 1, 2], [3, 2, 1]]
f(A)
print(A)  # -> [[10, 0, 0], [1, 2, 0], [2, 1, 0]]

关于python - 为什么这个参数列表在Python中没有改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58868615/

相关文章:

python - 不规则时间序列上的 Pandas 滑动/滚动窗口

python - 如何删除闭包类中捕获的变量

python - 基于互斥组参数的条件子解析器

python - 创建奇数列表

c# - 为什么 List<T>.ForEach 比标准 foreach 快?

python - 在 pandas 中查找子字符串

python - 值错误 : Input arrays should have the same number of samples as target arrays. 找到 166 个输入样本和 4 个目标样本

python - 希克尔名称错误 : name 'file' is not defined

python - 如何使用 Imdbpy 库获取电影的长度?

list - Kotlin 生成没有重复元素的列表的排列(按顺序)