如何在Python中对该数组进行排序?

如何在Python中对该数组进行排序?,python,arrays,list,sorting,Python,Arrays,List,Sorting,我有这个阵列: [14, 'S', 12, 'D', 8, 'S', 9, 'S', 10, 'D'] 我想按降序(数字)对它进行排序,但同时将数字和下面的字母放在一起。所以结果应该是这样的: [14, 'S', 12, 'D', 10, 'D', 9, 'S', 8, 'S'] 我该怎么做 我试着这样做(five_cards_num是数组的名称): 但我得到了一个错误: TypeError:“int”和“str”实例之间不支持“>” 提前谢谢。您可以使用zip将列表转换为元组列表,这样您就

我有这个阵列:

[14, 'S', 12, 'D', 8, 'S', 9, 'S', 10, 'D']
我想按降序(数字)对它进行排序,但同时将数字和下面的字母放在一起。所以结果应该是这样的:

[14, 'S', 12, 'D', 10, 'D', 9, 'S', 8, 'S']
我该怎么做

我试着这样做(five_cards_num是数组的名称):

但我得到了一个错误:

TypeError:“int”和“str”实例之间不支持“>”


提前谢谢。

您可以使用
zip
将列表转换为元组列表,这样您就可以对这些对进行排序,然后使用嵌套列表将其展平:

print([a for i in sorted(zip(five_cards_num[::2], five_cards_num[1::2]), reverse=True) for a in i])
这将产生:

[14, 'S', 12, 'D', 10, 'D', 9, 'S', 8, 'S']

我更喜欢这个简单的解决方案:

list(sum(sorted(zip(x[::2], x[1::2]), reverse=True), ()))
输出

[14, 'S', 12, 'D', 10, 'D', 9, 'S', 8, 'S']

再次使用另一种方法


漂亮的一句话:)@Lev@KostadinSlavov谢谢:)很好用,谢谢!你能再给我解释一下“a代表我在”和“a代表我在”是什么意思吗?我以前从未见过“for”这样使用。很高兴能帮上忙。有关更多详细信息,请参阅。
[14, 'S', 12, 'D', 10, 'D', 9, 'S', 8, 'S']
>>> import itertools as it
>>> a = [14, 'S', 12, 'D', 8, 'S', 9, 'S', 10, 'D']
>>> b = sorted(it.izip(*[iter(a)]*2), reverse=True)
>>> b
[(14, 'S'), (12, 'D'), (10, 'D'), (9, 'S'), (8, 'S')] # you may want to play with a list of tuples (?|!)
>>> list(it.chain(*b))
[14, 'S', 12, 'D', 10, 'D', 9, 'S', 8, 'S']