重新排序列表列表中的列表元素
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
我有一个由字符串和整数元素组成的列表列表,例如
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