我正在研究一种排序算法,将小写字母放在前面,然后是大写字母,然后是奇数,最后是偶数。例如String1234
变成ginrtS1324
代码
def getKey(x):
if x.islower():
return(1,x)
elif x.isupper():
return(2,x)
elif x.isdigit():
if int(x)%2 == 1:
return(3,x)
else:
return(4,x)
print(*sorted('String1234',key=getKey),sep='')
我知道元组返回为(1, g), (1,i)... (2, S), (3, 1), (3, 3) (4, 2), (4,4)
。我不明白的是为什么要创建一个列表:['g', 'i', 'n', 'r', 't', '1', '3', '2', '4']
以及元组的0索引发生了什么
sorted
返回一个排序列表,其中包含传递给它的任何iterable的元素:如果要将其转换回字符串,一种简单的方法是
join()
:如果传递
key
参数,则结果键(通过调用每个要排序的元素上的key
函数获得)将用于排序中的比较,但输出仍然是由原始元素生成的,而不是键如果您想获得元组列表而不是字母列表,您可以通过在排序之前将键函数映射到列表本身来实现这一点(并这样做,而不是将其作为单独的参数传递给^{):
相关问题 更多 >
编程相关推荐