通过这段代码,我得到了基于元素长度的排序列表。
>>> a = [[1,2,3],[3,4,5,6],[7,8],[9,10,11]]
>>> print sorted(a, key=lambda m: len(m))
[[7, 8], [1, 2, 3], [9, 10, 11], [3, 4, 5, 6]]
在对list的列表进行排序时,我需要在元素长度相同的情况下引入一些随机性。对于前面的例子。我需要得到排序的结果
[[7, 8], [1, 2, 3], [9, 10, 11], [3, 4, 5, 6]]
或
[[7, 8], [9, 10, 11], [1, 2, 3], [3, 4, 5, 6]]
随机。
我怎样才能用 Python 实现它?
请您参考如下方法:
Python 的排序函数是稳定的,这意味着比较相等的元素的顺序与原始列表相同。因此,您可以将列表打乱,然后根据长度排序。
import random
a = [[1,2,3],[3,4,5,6],[7,8],[9,10,11]]
random.shuffle(a)
a.sort(key = len)
请注意,此代码就地对列表 a 进行洗牌和排序。
