在python的列表中交换元组/列表中的值?

2024-10-06 17:21:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我在这样的列表中有一个元组/列表:

[('foo','bar'),('foo1','bar1'),('foofoo','barbar')]

在python中(在非常低的cpu/ram机器上运行)交换这样的值的最快方式是什么。。。

[('bar','foo'),('bar1','foo1'),('barbar','foofoo')]

有效使用:

for x in mylist:
    self.maynewlist.append((_(x[1]),(x[0])))

有更好或更快的方法吗???


Tags: in机器列表forfoo方式barcpu
3条回答

一种奇特的方式:

[t[::-1] for t in mylist]

您可以这样使用reversed

tuple(reversed((1, 2)) == (2, 1)

要将其应用于列表,可以使用map或列表理解:

map(tuple, map(reversed, tuples))     # map
[tuple(reversed(x)) for x in tuples]  # list comprehension

如果您主要对运行时速度感兴趣,我只能建议您分析各种方法并选择最快的方法。

你可以使用地图:

map (lambda t: (t[1], t[0]), mylist)

或列表理解:

[(t[1], t[0]) for t in mylist]

当需要lambda时,列表理解是首选的,并且应该比map快得多,但是请注意,列表理解有一个严格的评估,即它将在绑定到变量后立即进行评估,如果您担心内存消耗,请使用生成器代替:

g = ((t[1], t[0]) for t in mylist)
#call when you need a value
g.next()

这里还有更多的细节:Python List Comprehension Vs. Map

相关问题 更多 >