[英]Finding an element in nested python list and then replacing it
我有一个嵌套列表,我试图用其他东西替换列表中的某个元素。
NL = [[1,2,3],
[4,5,6],
[7,8,9]];
现在,我需要更新列表,假设用户想要将 NL[1][1](即 5)处的元素更改为“X”。
NL 将更新为
NL = [[1,2,3],
[4,'X',6],
[7,8,9]];`
我在尝试找到元素的 position 然后更改它时遇到了麻烦。 任何帮助深表感谢。
谢谢
使用 2 个索引,1 个用于您想要的嵌套列表,一个用于您想要的嵌套列表的元素。
因此,在这种情况下,您需要第二个列表的第二个元素:
NL[1][1]='X'
Output:
[[1, 2, 3], [4, 'X', 6], [7, 8, 9]]
假设您需要找到元素5
并希望将其替换为10
。 我们遍历外部列表,然后遍历每个内部列表的元素。 一旦我们找到我们要查找的元素,我们就可以用索引替换它。 一旦找到匹配的元素,我们就使用 enumerate 来获取索引。
以下代码替换所有匹配元素(所有出现的5
)。
NL = [[1,2,3], [4,5,6], [7,8,9]]
print(NL) # prints: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for i, sublist in enumerate(NL):
for y, element in enumerate(sublist):
if element == 5:
NL[i][y] = 10
print(NL) # prints: [[1, 2, 3], [4, 10, 6], [7, 8, 9]]
使用numpy
:
NL = np.array(NL)
mask = np.where(NL == 5)
NL[mask] = 10
array([[ 1, 2, 3],
[ 4, 10, 6],
[ 7, 8, 9]])
解决方案2:
def get_index(num, List):
for row, i in enumerate(List):
if num in i:
return row, i.index(num)
return -1
idx = get_index(5,NL)
if idx>0:
NL[idx[0]][idx[1]] = 7
[[1, 2, 3], [4, 7, 6], [7, 8, 9]]
这将仅替换第一次出现的item_to_replace
。 如果您希望它在所有子列表中替换,则从try
块中删除break
语句。
item_to_replace = 5
for lst in NL:
try:
index = lst.index(item_to_replace)
lst[index] = # your replacement for item_to_replace
break
except ValueError:
continue
您应该通过索引访问元素。 您有 2D 列表(数组),因此您应该使用 2 个索引: NL[1][1] = "X"
。
完整代码:
NL = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
print("Original: {}".format(NL))
NL[1][1] = "X"
print("New: {}".format(NL))
Output:
>>> python3 test.py
Original: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
New: [[1, 2, 3], [4, 'X', 6], [7, 8, 9]]
只需使用 NL[1][1] = 'X'
然后打印(NL)
我在尝试找到元素的 position 然后更改它时遇到了麻烦。
这里的大多数答案似乎都错过了那部分,并假设您拥有position。
您可以使用嵌套列表推导:
NL = [[1,2,3],
[4,5,6],
[7,8,9]]
NL = [['X' if i==5 else i for i in j] for j in NL]
print(NL)
Output:
[[1, 2, 3],
[4,'X',6],
[7, 8, 9]]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.