我想更改下面元组中的第一个列表,以便将每个值递增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]
答案 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])