在Python中修改列表中的列表[重复]

Posted

技术标签:

【中文标题】在Python中修改列表中的列表[重复]【英文标题】:Modifying a list within a list in Python [duplicate] 【发布时间】:2017-08-06 22:50:46 【问题描述】:

我正在尝试修改临时列表并将临时列表存储在可能的列表中,但我需要让 list1 保持不变。当我通过 Python 运行它时,我的临时列表没有改变,所以我想知道哪里出了问题。

list1 = [['1', '1', '1'],
     ['0', '0', '0'],
     ['2', '2', '2']]

temp = list1
possible = []

for i in range(len(temp)-1):
    if(temp[i][0] == 1):
            if(temp[i+1][0] == 0):
                    temp[i+1][0] == 1

possible = possible + temp
temp = list1

print(possible)

【问题讨论】:

temp = list1 不是副本。您根本没有创建临时列表。见nedbatchelder.com/text/names.html 使用=,而不是== 【参考方案1】:

为了将list1 的数组复制到temp,因为list1 是二维数组,正如其他人建议的那样,我们可以使用deepcopy。请参阅this link here.。或者,也可以使用列表推导以及显示的here 来完成。

数组有string作为元素,所以条件语句if(temp[i][0] == 1)if(temp[i+1][0] == 0)可以替换为if(temp[i][0] == '1')if(temp[i+1][0] == '0')。并且正如上面在 cmets 中提到的,temp[i+1][0] == 1 必须替换为 temp[i+1][0] = 1。您可以尝试以下操作:

from copy import deepcopy

list1 = [['1', '1', '1'],
         ['0', '0', '0'],
         ['2', '2', '2']]

# copying element from list1
temp = deepcopy(list1)
possible = []
for i in range(len(temp)-1):
    if(temp[i][0] == '1'):
        if(temp[i+1][0] == '0'):
            temp[i+1][0] = '1'


possible = possible + temp

print('Contents of possible: ', possible)
print('Contents of list1: ', list1)
print('Contents of temp: ', temp)

【讨论】:

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

关于Python修改列表的值的问题

Python:如何从列表中的字典创建 DataFrame 列 [重复]

Python编程入门到实践 - 笔记( 6 章)

如何将熊猫中的一列列表转换为Python中唯一值的稀疏DataFrame [重复]

python修改列表中的项目,保存回列表中

Python ❀ 列表与元组