Python中如何通过corners列表修改原二维列表s的对应元素值
Python列表赋值未生效问题解答
根因说明
- 整数是Python中的不可变类型,你构建
corners时只是把s对应位置的数值拷贝了一份存入新列表,corners和原列表s的存储位置没有关联,修改corners的元素不会影响原列表。 - 原代码中
corners[0] = 2的操作是把corners的第一个子列表直接覆盖为整数2,逻辑上也没有指向s[0][0]的位置。
实现方案
如果要通过corners修改原列表的对应位置,推荐在corners中存储位置索引而非数值副本,修改时通过索引定位到原列表赋值即可,示例代码如下:
s = [[5,4,7],[3,1,5],[1,7,4]] # 存储四个角对应的行列索引 corners = [[(0,0), (2,2)], [(2,0), (0,2)]] # 修改第一个角(即s[0][0])的值为2 r, c = corners[0][0] s[r][c] = 2 print(s[0][0])
运行后输出结果为2,原列表s同步更新。
内容的提问来源于stack exchange,提问作者Dilshan Siriwardhane
相关产品推荐
相关产品推荐

