首页 > 解决方案 > 如何在 Python 中对这个数组进行排序?

问题描述

我有这个数组:

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

我想按降序(数字)对其进行排序,但同时将数字与以下字母保持在一起。所以结果应该是这样的:

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

我怎样才能做到这一点?

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

for j in range(4):
    max = five_cards_num[j]
    max_color = five_cards_num[j+1]
    for i in range(j, 5):
        if (five_cards_num[2*i] > max):
            max = five_cards_num[2*i]
            max_color = five_cards_num[2*i+1]
            five_cards_num[2*i] = five_cards_num[j]
            five_cards_num[2*i+1] = five_cards_num[j+1]
            five_cards_num[j] = max
            five_cards_num[j+1] = max_color

但我得到错误:

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

先感谢您。

标签: pythonarrayslistsorting

解决方案


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

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

输出

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

推荐阅读