如何在python中的2D列表中替换值?

时间:2019-02-08 13:13:18

标签: python

让我说这个例子:

Num = [[1,2,3],[4,5,6],[7,8,9]]

如何使用list.append()和索引位置的用户输入替换此列表中的数字?

例如:我想用7替换数组中的4。

4 个答案:

答案 0 :(得分:2)

您不使用.append。您使用分配(可能是切片分配)。 Num[1]将指代[4,5,6]Num[1][0]是指4 ...,所以Num[1][0] = 7会做您想要的事情。

答案 1 :(得分:0)

Num[1][0]= 7 

应该做到这一点...:)

答案 2 :(得分:0)

尝试此操作,它将用7替换每个4,有效地重新创建列表。不再是4了...可以在列表的任何位置

new_num = [[k if k != 4 else 7 for k in i] for i in num]

输出

[[1, 2, 3], [7, 5, 6], [7, 8, 9]]

答案 3 :(得分:0)

.append()仅用于在数组末尾插入项目。

简单的方法是,如果您现在的数据在哪里:

num = [[1,2,3],[4,5,6],[7,8,9]]
num[1][0] = <new_value>

如果要替换数组中的全部4个或前4个,可以这样迭代:

looked = <number>
new_value = <number>
for array_data in num:
   if (looked in array_data):
      array_data[array_data.index(looked)] = new_value

对于功能替换:

# This will replace the first <value> found
def replace(L, new, old):
   for array_data in num:
      if (old in array_data):
         array_data[array_data.index(old)] = new

num = [[1,2,3],[4,5,6],[7,8,9]]
replace(num, 7, 4)

[[1,2,3], [7,5,6], [7,8,9]]

要替换所有值,只需使用lambda函数:

new_num = lambda x, y, z: [[k if k != z else y for k in i] for i in x]
new_num(num, 7, 4)

[[1,2,3], [7,5,6], [7,8,9]]