如何更改列表的元组中的第一个值?

时间:2018-11-19 16:27:21

标签: python numpy replace tuples

这是我的矩阵:

b = [[(1, 0.044), (2, 0.042)], [(4, 0.18), (6, 0.023)], [(4, 0.03), (5, 
0.023)]]

我想让它成为

b = [[(6, 0.044), (7, 0.042)], [(9, 0.18), (11, 0.023)], [(9, 0.03), (10, 
0.023)]]

要为元组中的第一个值添加n,我尝试过:

for n in b:
    for ee,ww in n:
        ee == ee + 2903

它不起作用。 我应该如何保持对原始矩阵b的更改?

2 个答案:

答案 0 :(得分:3)

组是不可变的。您可以改用列表理解:

res = [[(i+5, j) for i, j in tup] for tup in b]

[[(6, 0.044), (7, 0.042)], [(9, 0.18), (11, 0.023)], [(9, 0.03), (10, 0.023)]]

答案 1 :(得分:2)

您不能修改元组,它们在Python中是不可变的。但是,您可以将现有的元组替换为其他元组。

b = [[(1, 0.044), (2, 0.042)], [(4, 0.18), (6, 0.023)], [(4, 0.03), (5, 0.023)]]
for n in b:
    for i, (ee, ww) in enumerate(n):
        n[i] = (ee + 2903, ww)
print(b)

输出:

[[(2904, 0.044), (2905, 0.042)], [(2907, 0.18), (2909, 0.023)], [(2907, 0.03), (2908, 0.023)]]