试着缩短我刚写的这个功能。
给定一个(未排序的)整数数组,将它们排列成一个< 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约定是否有更短和/或更快的方法?也许一个班轮?谢谢。
答案 0 :(得分:1)
您可以按照以下方式执行此操作:
l = [...] #your list
l.sort()
l[::2],l[1::2] = l[1::2],l[::2]