You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在不使用NumPy的情况下实现Python嵌套列表的行循环替换?

不使用NumPy实现嵌套列表行的循环替换

直接生成新列表(最简单方式)

你需要的是把原列表的行按「原第2行→第1行,原第3行→第2行,原第1行→第3行」的顺序重新排列,直接通过索引组合生成新列表就行:

lst = [[0, 0, 1],
       [0, 2, 3],
       [5, 2, 3]]
# 对应1-based的行顺序:第2行(索引1)、第3行(索引2)、第1行(索引0)
lst = [lst[1], lst[2], lst[0]]
print(lst)

运行后输出:

[[0, 2, 3], [5, 2, 3], [0, 0, 1]]

原地修改原列表(适合不想重新赋值的场景)

如果要在原列表上直接修改,得先保存被覆盖的原始行,不然会出现数据覆盖丢失的问题:

lst = [[0, 0, 1],
       [0, 2, 3],
       [5, 2, 3]]
# 先保存原第1行的副本,避免后续修改影响原始数据
first_row = lst[0].copy()
# 依次替换行
lst[0] = lst[1]
lst[1] = lst[2]
lst[2] = first_row
print(lst)

输出结果和上面一致。

注意:如果子列表里是可变元素,一定要用.copy()创建副本;如果是不可变元素,直接赋值也能行,但.copy()是更通用的写法。

关于你遇到的错误

arr[[0, 1]] = arr[[1, 0]]是NumPy数组的专属语法,普通Python列表不支持这种多索引的取值和赋值方式。当你对普通列表用这种写法时,Python会把[0,1]当成一个索引键,而列表只能用整数索引,自然会报错(你碰到的'NoneType' object is not subscriptable大概率是因为变量arr实际是None,或者误用了列表的索引规则)。

内容的提问来源于stack exchange,提问作者tsx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 15:45:47