如何更改元组中的列表?

时间:2015-03-18 00:37:37

标签: python list

我想更改下面元组中的第一个列表,以便将每个值递增1。

matrix = [1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15]

matrix = [x+1 for x in matrix[0]]

print(matrix)

运行该代码后,我收到一个列表[2,3,4,5,6]。我希望有人可以给我一个提示,使代码返回元组的其余部分,如[2,3,4,5,6],[6,7,8,9,10],[11 ,12,13,14,15]

3 个答案:

答案 0 :(得分:3)

您可以(ab)使用切片操作,例如:

matrix = [1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15]
matrix[0][:] = [n + 1 for n in matrix[0]]
# ([2, 3, 4, 5, 6], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15])

这将替换元组的第一个列表,而不是创建新元组并重新绑定matrix名称 - 而是使用wim's answer

答案 1 :(得分:2)

我意识到它涉及重新构建你的问题,但是如果你不想要immutability的属性,那么就把它作为一个2D列表。鉴于您希望更改这些值,您可能希望它是可变的。

代码将是:

matrix = [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15]]
matrix[0] = [x + 1 for x in matrix[0]]
print(matrix)

另外,我在一些空格中添加了。这只是一件小事,但PEP 8建议用逗号后的空格和+等二元运算符。

答案 2 :(得分:1)

这有点棘手,因为你实际上有一个元组而不是2D列表:

>>> matrix = [1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15]
>>> ([1 + n for n in matrix[0]],) + matrix[1:]
([2, 3, 4, 5, 6], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15])