重新排序列表列表中的列表元素

Reordering elements of lists in a list of lists

我有一个由字符串和整数元素组成的列表列表,例如

a = [['i','j',1,2,3...n], ['k','l',4,5,6...n], ['m','n',7,8,9...n]]

我想重新排序每个子列表中的字符串元素,以便 a[l][1] 代替 a[l][0],反之亦然,所以我最终得到:

a = [['j','i',1,2,3...n], ['l','k',4,5,6...n], ['n','m',7,8,9...n]]

我尝试遍历每个子列表并使用 order 变量来更改整数位置,但它似乎并没有更改每个列表中的顺序:

order = [1,0,2,3,4...n]

for l in reversed(range(len(a))):
    [a[l][j] for j in order]

我做错了什么?

具体问题最简单的方法是在循环中分配切片:

for sub in a:
    sub[:2] = reversed(sub[:2])

使用您的一般订购方法,您可以:

for sub in a:
    sub[:] = [sub[i] for i in order]  # needs to mutate the actual object!
[a[l][j] for j in order]

这只是一个计算然后丢弃的表达式。

如果你想改变a,你需要分配给它:

a[l] = [a[l][j] for j in order]

只需使用此代码:

a[1][1], a[1][0] = a[1][0] , a[1][1]

感谢python