sub*_*ire 10 python swap tuples list
我在列表中有一个元组/列表,如下所示:
[('foo','bar'),('foo1','bar1'),('foofoo','barbar')]
Run Code Online (Sandbox Code Playgroud)
python(在非常低的cpu/ram机器上运行)交换这样的值的最快方法是什么...
[('bar','foo'),('bar1','foo1'),('barbar','foofoo')]
Run Code Online (Sandbox Code Playgroud)
使用:
for x in mylist:
self.maynewlist.append((_(x[1]),(x[0])))
Run Code Online (Sandbox Code Playgroud)
有没有更好或更快的方式?
iab*_*der 13
你可以用map:
map (lambda t: (t[1], t[0]), mylist)
Run Code Online (Sandbox Code Playgroud)
或列表理解:
[(t[1], t[0]) for t in mylist]
Run Code Online (Sandbox Code Playgroud)
列表推导是首选的,并且据说比需要lambda时的map要快得多,但是请注意列表推导有一个严格的评估,即它一旦被绑定到变量就会被评估,如果你担心内存消耗使用了发电机代替:
g = ((t[1], t[0]) for t in mylist)
#call when you need a value
g.next()
Run Code Online (Sandbox Code Playgroud)
这里有一些更多的细节:Python List Comprehension Vs. 地图
你可以reversed像这样使用:
tuple(reversed((1, 2)) == (2, 1)
Run Code Online (Sandbox Code Playgroud)
要将其应用于列表,您可以使用map或列表理解:
map(tuple, map(reversed, tuples)) # map
[tuple(reversed(x)) for x in tuples] # list comprehension
Run Code Online (Sandbox Code Playgroud)
如果您主要对运行时速度感兴趣,我只能建议您分析各种方法并选择最快的方法.