反转列表列表或元组列表的顺序
Reversing the order of a list of lists or list of tuples
我有一个元组列表:
ls = [('hello', 'there'), ('whats', 'up'), ('no', 'idea')]
我想颠倒列表中每个元组的顺序。
ls = [('there', 'hello'), ('up', 'whats'), ('idea', 'no')]
我知道元组是不可变的,所以我需要创建新的元组。我不太确定最好的方法是什么。我可以将元组列表更改为列表列表,但我认为可能有更有效的方法来解决这个问题。
只需按照以下几行使用 list comprehension:
ls = [tpl[::-1] for tpl in ls]
这使用典型的 [::-1]
slice 模式来反转元组。
还要注意列表本身不是不可变的,所以如果你需要改变原始列表,而不仅仅是重新绑定 ls
变量,你可以使用 slice assignment:
ls[:] = [tpl[::-1] for tpl in ls]
这是基于循环的方法的简写形式:
for i, tpl in enumerate(ls):
ls[i] = tpl[::-1]
输入:
ls = [('hello', 'there'), ('whats', 'up'), ('no', 'idea')]
ls = [(f,s) for s,f in ls]
print(ls)
输出:
[('there', 'hello'), ('up', 'whats'), ('idea', 'no')]
我有一个元组列表:
ls = [('hello', 'there'), ('whats', 'up'), ('no', 'idea')]
我想颠倒列表中每个元组的顺序。
ls = [('there', 'hello'), ('up', 'whats'), ('idea', 'no')]
我知道元组是不可变的,所以我需要创建新的元组。我不太确定最好的方法是什么。我可以将元组列表更改为列表列表,但我认为可能有更有效的方法来解决这个问题。
只需按照以下几行使用 list comprehension:
ls = [tpl[::-1] for tpl in ls]
这使用典型的 [::-1]
slice 模式来反转元组。
还要注意列表本身不是不可变的,所以如果你需要改变原始列表,而不仅仅是重新绑定 ls
变量,你可以使用 slice assignment:
ls[:] = [tpl[::-1] for tpl in ls]
这是基于循环的方法的简写形式:
for i, tpl in enumerate(ls):
ls[i] = tpl[::-1]
输入:
ls = [('hello', 'there'), ('whats', 'up'), ('no', 'idea')]
ls = [(f,s) for s,f in ls]
print(ls)
输出:
[('there', 'hello'), ('up', 'whats'), ('idea', 'no')]