Python向列表子列表指定位置插入元素报错,需实现预期输出
问题解决:给列表子元素插入指定值
错误原因
Python中列表的insert()方法是原地修改列表,它的返回值是None。你的代码里每次循环都把A赋值为A[i].insert(...)的返回值,第一次循环后A就变成了None,第二次循环访问A[i]时自然会抛出TypeError: 'NoneType' object is not subscriptable。
另外你代码里插入的值写的是0,但预期输出里需要插入对应索引i(比如第二个子列表插1),这也是不符合预期的点。
修正后的代码
直接原地修改每个子列表,不要覆盖原列表A:
A = [[1, 2, 3],[0, 2, 3],[0, 1, 3],[0, 1, 2]] for i in range(len(A)): # 给第i个子列表的位置0插入值i A[i].insert(0, i) print(A)
运行结果
输出和预期完全一致:
[[0, 1, 2, 3], [1, 0, 2, 3], [2, 0, 1, 3], [3, 0, 1, 2]]
更简洁的写法(列表推导式)
如果不想原地修改原列表,可以用列表推导式生成新列表,代码更简洁:
A = [[1, 2, 3],[0, 2, 3],[0, 1, 3],[0, 1, 2]] new_A = [[i] + sublist for i, sublist in enumerate(A)] print(new_A)
这种方式不会改变原列表A,直接生成符合要求的新列表。
内容的提问来源于stack exchange,提问作者rajunarlikar123
相关产品推荐
相关产品推荐

