Python 将简单的函数转换为一行程序来排列列表?
试图缩短我刚写的这个函数 给定一个(未排序的)整数数组,将它们排列成acPython 将简单的函数转换为一行程序来排列列表?,python,Python,试图缩短我刚写的这个函数 给定一个(未排序的)整数数组,将它们排列成ace…等 >>> 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
>>> 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约定有没有更短和/或更快的方法?也许是一艘班轮?谢谢 您可以按如下方式执行:
l = [...] #your list
l.sort()
l[::2],l[1::2] = l[1::2],l[::2]
一句话不一定意味着更快。是的,我知道,但只是试着更习惯这种语言,学习更短的方法来做简单的事情。这个例子仍然不满足条件。4不大于65。是的,我知道,该函数只是在对列表排序后交换两对元组,试图找出如何解决这一问题……这会交换每对元组中的数字,但不满足ac