相关疑难解决方法(0)

如何在Python 3中使用自定义比较函数?

Python 2.x中,我可以将自定义函数传递给sorted和.sort函数

>>> x=['kar','htar','har','ar']
>>>
>>> sorted(x)
['ar', 'har', 'htar', 'kar']
>>> 
>>> sorted(x,cmp=customsort)
['kar', 'htar', 'har', 'ar']
Run Code Online (Sandbox Code Playgroud)

因为,在我的语言中,配偶带有这个命令

"k","kh",....,"ht",..."h",...,"a"
Run Code Online (Sandbox Code Playgroud)

但在Python 3.x中,看起来我无法传递cmp关键字

>>> sorted(x,cmp=customsort)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'cmp' is an invalid keyword argument for this function
Run Code Online (Sandbox Code Playgroud)

有没有其他选择,还是我应该编写自己的排序函数?

注意:我通过使用"k","kh"等进行了简化.实际字符是Unicodes甚至更复杂,有时元组前后有元音,我已经完成了自定义比较功能,所以那部分还可以.唯一的问题是我无法将自定义比较函数传递给sorted或.sort

python sorting python-3.x

85
推荐指数
4
解决办法
5万
查看次数

对列表进行排序以形成最大可能的数字

我正在尝试编写一个给出非负整数列表的函数,将它们排列成最大可能的数字.

例如,给定[50, 2, 1, 9],最大的数字是95021.

这是我试图解决问题的代码:

a = [50, 2, 1, 9]
a.sort()
ans = []
for i in range(len(a)-1,-1,-1):
    ans.append(a[i])

print ''.join(map(str,ans))
Run Code Online (Sandbox Code Playgroud)

不过,我得到50921,因为50是最大的,但它应该显示9第一.

python python-2.7

13
推荐指数
4
解决办法
7249
查看次数

标签 统计

python ×2

python-2.7 ×1

python-3.x ×1

sorting ×1