转换简单的功能,将列表排列成一个班轮?

时间:2014-05-23 05:51:05

标签: python

试着缩短我刚写的这个功能。

给定一个(未排序的)整数数组,将它们排列成一个< b> c< d> è...等。

>>> swap([3,5,8,4,9,65,78,56])
[5, 8, 3, 4, 65, 78, 9, 56]

这就是我所拥有的:

def swap(l):
 newlist=[]
 l.sort()
 for e in range(0,len(l)-1,2):
      newlist.append((l[e],l[e+1]))
 for e in range(0,len(newlist)-1,2):
      newlist[e],newlist[e+1]=newlist[e+1],newlist[e]
 return list(sum(newlist, ()))

基本上,我正在对列表进行排序,使用新列表交换相邻的两对元组,然后展平新列表。

使用python约定是否有更短和/或更快的方法?也许一个班轮?谢谢。

1 个答案:

答案 0 :(得分:1)

您可以按照以下方式执行此操作:

l = [...] #your list

l.sort()

l[::2],l[1::2] = l[1::2],l[::2]