我在处理python中列表中的列表时遇到了麻烦(我在编程方面很新)。
现在,我如何访问每个嵌套列表位置,然后操纵嵌套列表值的位置,例如,在保持嵌套列表在主列表中的位置的同时更改其顺序。
例如: 如果我想离开:
aList = [
[1,2,3,4,3,2],
[2,3,4,5,4,3],
[2,1,2,3,4,3]
]
到这里:
new_aList = [
[2,3,4,3,2,1],
[3,4,5,4,3,2],
[3,4,3,2,1,2]
]
我知道如何访问每个列表,但是我遇到了一个关于如何更改嵌套列表值的位置的块。
感谢您的帮助!
答案 0 :(得分:8)
使用列表推导来获取新元素,并可选择使用slice-assign来替换列表中的现有元素。
new_aList = [list(reversed(x)) for x in aList]
aList[:] = [list(reversed(x)) for x in aList]
答案 1 :(得分:3)
你可以像这样反转每个项目
>>> aList = [
... [1,2,3,4,3,2],
... [2,3,4,5,4,3],
... [2,1,2,3,4,3]
... ]
>>> aList[0].reverse()
>>> aList[1].reverse()
>>> aList[2].reverse()
>>> aList
[[2, 3, 4, 3, 2, 1], [3, 4, 5, 4, 3, 2], [3, 4, 3, 2, 1, 2]]
但总的来说,最好使用一个循环,因为aList可能有很多项
>>> aList = [
... [1,2,3,4,3,2],
... [2,3,4,5,4,3],
... [2,1,2,3,4,3]
... ]
>>> for item in aList:
... item.reverse()
...
>>> aList
[[2, 3, 4, 3, 2, 1], [3, 4, 5, 4, 3, 2], [3, 4, 3, 2, 1, 2]]
这两种方法都会修改aList,因此会破坏未修改的版本。下面是如何创建新列表并保持列表不变
>>> aList = [
... [1,2,3,4,3,2],
... [2,3,4,5,4,3],
... [2,1,2,3,4,3]
... ]
>>> new_aList = []
>>> for item in aList:
... new_aList.append(list(reversed(item)))
...
>>> new_aList
[[2, 3, 4, 3, 2, 1], [3, 4, 5, 4, 3, 2], [3, 4, 3, 2, 1, 2]]
另一种反转列表的方法是使用这种扩展切片技巧。 -1
表示按-1
的步骤逐步执行列表。向后。
>>> new_aList = []
>>> for item in aList:
... new_aList.append(item[::-1])
...
>>> new_aList
[[2, 3, 4, 3, 2, 1], [3, 4, 5, 4, 3, 2], [3, 4, 3, 2, 1, 2]]
不是明确地创建一个空列表并附加到它,而是将这样的循环写成列表解析更常见
>>> new_aList = [item[::-1] for item in aList]
>>> new_aList
[[2, 3, 4, 3, 2, 1], [3, 4, 5, 4, 3, 2], [3, 4, 3, 2, 1, 2]]
答案 2 :(得分:1)
bList = []
for l in aList:
l.reverse()
bList.append(l)
答案 3 :(得分:0)
对于列表的更细粒度的操作,可以使用元组解包来交换值的位置(这可以巧妙地避免使用临时变量):
aList[0][1], aList[0][3] = aList[0][3], aList[0][1]
执行此操作后,第二个和第四个值将更改位置,因此aList[0]
将如下所示:
[1, 4, 3, 2, 3, 2]