【发布时间】:2019-05-06 09:37:43
【问题描述】:
假设我有一个这样的列表:[2, 3, 3, 2, 1, 1],我想对它进行排序以获得[1, 1, 3, 3, 2, 2]。我怎样才能以好的pythonic方式做到这一点?我试过这样:
import random
alist = [1, 1, 2, 2, 3, 3]
random.shuffle(alist)
print(alist)
ones = []
twos = []
threes = []
for item in alist:
if item == 1:
ones.append(item)
elif item == 2:
twos.append(item)
else:
threes.append(item)
ordered_list = []
ordered_list.extend(ones)
ordered_list.extend(threes)
ordered_list.extend(twos)
print(ordered_list)
但我想这不是最好的方法。也许有更好的方法?
【问题讨论】:
-
排序背后的逻辑是什么?
-
这是您唯一的用途吗?即永远不会有(比如说)4 进行排序,并且每个数字总是有 2 个元素?
-
您希望按照什么标准进行排序以产生该输出?
-
如果它只包含
1、2和3,这可以使用“基数排序”的变体在线性时间内完成。 -
我不确定这是否可以称为排序:-)
标签: python