Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将简单的函数转换为一行程序来排列列表?_Python - Fatal编程技术网

Python 将简单的函数转换为一行程序来排列列表?

Python 将简单的函数转换为一行程序来排列列表?,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

试图缩短我刚写的这个函数

给定一个(未排序的)整数数组,将它们排列成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)-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。是的,我知道,该函数只是在对列表排序后交换两对元组,试图找出如何解决这一问题……这会交换每对元组中的数字,但不满足ace的原始排列。这导致[4,3,8,5,56,9,78,65]当它应该是[5,8,3,4,65,78,9,56]@jon234时,OP只显示了一种可能的安排。根据他的标准,多个结果是可能的。我认为原始条件“ace”是错误的,因为它不满足OP的示例。刚刚意识到,是的,第二个数字不满足它,需要修正它。