Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.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 如何将列表排序为[1,a,2,B,3,C,…]_Python_Python 3.x_String_List_Sorting - Fatal编程技术网

Python 如何将列表排序为[1,a,2,B,3,C,…]

Python 如何将列表排序为[1,a,2,B,3,C,…],python,python-3.x,string,list,sorting,Python,Python 3.x,String,List,Sorting,我想将如下所示的列表排序:['3','6','B','2','1','C','a']如下:['1','a','2','B','3','C','6'] 提前谢谢 from itertools import zip_longest l = ['3', '6', 'B', '2', '1', 'C', 'A'] num = sorted(filter(str.isnumeric, l), key=lambda x: int(x)) ch = sorted(filter(str.isalpha, l)

我想将如下所示的列表排序:
['3','6','B','2','1','C','a']
如下:
['1','a','2','B','3','C','6']

提前谢谢

from itertools import zip_longest

l = ['3', '6', 'B', '2', '1', 'C', 'A']
num = sorted(filter(str.isnumeric, l), key=lambda x: int(x))
ch = sorted(filter(str.isalpha, l))

[ e for t in zip_longest(num, ch) for e in t if e]
输出:

['1', 'A', '2', 'B', '3', 'C', '6']
首先,创建两个列表,一个包含表示数字的字符串,另一个包含字母的列表,然后使用列表理解和
itertools.zip\u longest
对它们进行排序并组合。您可以尝试此方法

l=['3', '6', 'B', '2', '1', 'C', 'A']
sorted(['3', '6', 'B', '2', 'A', 'C', '1'],key=lambda x:(int(x),0) if x.isnumeric() else ((ord(x)-64)%26,1))
# ['1', 'A', '2', 'B', '3', 'C', '6']

由于数字的优先级更高,我对数字设置了
(int(x),0)
,对字母设置了
((ord(x)-64)%26,1)
以打破僵局。

您尝试过什么吗?您好,欢迎来到StackOverflow!您似乎认为StackOverflow是一个发布问题并获得一些代码作为回报的站点。事实并非如此。您的问题很可能很快就会被关闭甚至删除。为了防止将来发生这种情况,请和。特别是,我不清楚这种排序顺序背后的逻辑是什么。有多种解释方法会导致这种顺序。请检查以下问题:Nice use
zip\u longest
+1@kederrac