我有一个这样的名单里面一个元组/列表:
[('foo','bar'),('foo1','bar1'),('foofoo','barbar')]
什么是蟒蛇最快的方式(一个非常低的CPU /内存的机器上运行)交换这样的价值...
[('bar','foo'),('bar1','foo1'),('barbar','foofoo')]
curently使用:
for x in mylist:
self.maynewlist.append((_(x[1]),(x[0])))
有没有更好或更快的方式???
您可以使用地图:
map (lambda t: (t[1], t[0]), mylist)
或列表理解:
[(t[1], t[0]) for t in mylist]
列表内涵是首选,也应该远远快于需要时拉姆达地图,但是请注意,列表中理解有严格的评价,那就是它会如果你担心内存消耗使用尽快它被绑定变量进行评估, 发生器来代替:
g = ((t[1], t[0]) for t in mylist)
#call when you need a value
g.next()
还有一些细节在这里: Python列表理解比。 地图
您可以使用reversed
这样的:
tuple(reversed((1, 2)) == (2, 1)
将它应用到一个列表,你可以使用map
或列表理解:
map(tuple, map(reversed, tuples)) # map
[tuple(reversed(x)) for x in tuples] # list comprehension
如果你有兴趣主要是在运行速度,我只能建议您配置文件中的各种方法和选择最快的。
一个奇特的方式:
[t[::-1] for t in mylist]
使用列表理解我找到更优雅和理解使用单独的变量,而不是指数的单一变量作为由@iabdalkader提供的解决方案:
[(b, a) for a, b in mylist]