如何用Python实现Ruby中sort_by {rand}的随机排序功能?
将Ruby数组随机排序代码转为Python实现
Ruby里的someArray.sort_by {rand}是通过给每个元素绑定随机值来实现数组随机排序,在Python里可以用以下两种方式实现:
方法1:原地打乱数组(直接修改原数组)
使用random模块的shuffle()方法,它会直接在原数组上进行随机重排,不需要返回值:
import random some_array = [1, 2, 3, 4, 5] random.shuffle(some_array) # 此时some_array已经是随机排序后的状态
方法2:生成新的随机排序数组(不修改原数组)
如果不想改动原数组,想要生成一个新的随机排序数组,可以用sorted()函数配合random.random()作为排序key,这和Ruby的sort_by {rand}逻辑最接近:
import random some_array = [1, 2, 3, 4, 5] shuffled_array = sorted(some_array, key=lambda x: random.random()) # shuffled_array是新的随机排序数组,原some_array保持不变
内容的提问来源于stack exchange,提问作者hanan
相关产品推荐
相关产品推荐

