场景:

现在有一个list:[1,2,3,4,5,6],我需要把这个list在输出的时候,是以一种随机打乱的形式输出。

专业点的术语:将一个容器中的数据每次随机逐个遍历一遍。

注意:不是生成一个随机的list集。

环境:

Python 3.6

解决方案:

方案一:

有人可能会通过Random内置函数,来间接实现想要的结果。但是这种方式,太原始,也不够优雅,而且有种重复造轮子的嫌疑。这里我就不贴我自己通过random实现的效果了。

方案二:

Random中有一个random.shuffle()方法提供了完美的解决方案。代码如下:

x = [1,2,3,4,5,6]

random.shuffle(x)

print(x)

输出结果:

第一次输出内容:[6, 5, 1, 3, 2, 4]

第二次输出内容:[6, 1, 3, 5, 2, 4]

第三次输出内容:[5, 3, 1, 2, 4, 6]

从结果我们可以看出,输出是完全随机的,代码量就两行,不需要random,不需要for循环。

源码解读:

def shuffle(self, x, random=None):

"""Shuffle list x in place, and return None.

原位打乱列表,不生成新的列表。

Optional argument random is a 0-argument

function returning a random float in [0.0, 1.0);

if it is the default None,

the standard random.random will be used.

可选参数random是一个从0到参数的函数,返回[0.0,1.0)中的随机浮点;

如果random是缺省值None,则将使用标准的random.random()。

"""

if random is None:

randbelow = self._randbelow

for i in reversed(range(1, len(x))):

# pick an element in x[:i+1] with which to exchange x[i]

j = randbelow(i + 1)

x[i], x[j] = x[j], x[i]

else:

_int = int

for i in reversed(range(1, len(x))):

# pick an element in x[:i+1] with which to exchange x[i]

j = _int(random() * (i + 1))

x[i], x[j] = x[j], x[i]

注意 :

从代码的注释,我们看到random.shuffle()是对原list做修改,如果需要保留原list,请注意这个细节。

本文首发于BigYoung小站

python 随机排序_Python 如何随机打乱列表(List)排序相关推荐

  1. python字符串排序_Python-如何对字符串列表进行排序?

    小编典典 基本答案: mylist = ["b", "C", "A"] mylist.sort() 这会修改你的原始列表(即就地排序).要获 ...

  2. 大乐透python预测程序_Python生成随机验证码,大乐透号码

    随机生成验证码 示例代码: import random # 导入标准模块中的random if __name__ == '__main__': check_code = "" # ...

  3. python输出姓名_Python生成随机不重复姓名昵称

    姓采用百家姓,名字从常用名字高频字选取两个汉字,再和当前时间戳组合,估计应该是不会重复了,代码如下: # -*- coding:utf-8 -*- import random import time ...

  4. python如何完成列表的排序_Python要如何实现列表排序的几种方法

    排序,是许多编程语言中经常出现的问题.同样的,在Python中,如何是实现排序呢?(以下排序都是基于列表来实现) 一.使用Python内置函数进行排序 Python中拥有内置函数实现排序,可以直接调用 ...

  5. python dict排序_python 字典(dict)按键和值排序

    python 字典(dict)的特点就是无序的,按照键(key)来提取相应值(value),如果我们需要字典按值排序的话,那可以用下面的方法来进行: 1 下面的是按照value的值从大到小的顺序来排序 ...

  6. python按日期排序_Python List拆分,按日期排序,然后加入

    好吧,我已经在这里待了好几个小时了,我承认失败,请求你的宽恕. 目标:我有多个文件(银行对账单下载),我想合并.排序.删除重复项. 下载的格式如下: 1 2 3 4 5 6 7 8"08/0 ...

  7. python字典按照key排序_python中字典按key值排序的实现方法

    之前小编介绍了字典本身不可排序,但按值可以,小编也介绍了按value值排序的三种方法.sorted()函数可以对数字或字符串进行排序,按key排序只是输出的key值的排序列表,使用sorted()函数 ...

  8. python从键盘获取输入并排序_python从键盘输入数字并排序-女性时尚流行美容健康娱乐mv-ida网...

    女性时尚流行美容健康娱乐mv-ida网 mvida时尚娱乐网 首页 美容 护肤 化妆技巧 发型 服饰 健康 情感 美体 美食 娱乐 明星八卦 首页 > 高级搜索 python 读取 键盘 输入 ...

  9. python list排序_Python中字符串List按照长度排序

    下面看下字符串List按照长度排序(python)的实现方法 myList = ['青海省','内蒙古自治区','西藏自治区','新疆维吾尔自治区','广西壮族自治区'] 1.首先得到每个字符串长度 ...

最新文章

  1. 使用jquery实现的计算器功能
  2. android 代码打开权限,android开发权限询问的示例代码
  3. UVA11078开放式学分制(前面-后面的最大值)
  4. 深度学习、机器学习、机器人操作系统、人工智能学习资源
  5. SpringBoot:Actuator 监控管理工程各项信息
  6. sqlserver oracle对比,sqlserver和oracle常用函数对比
  7. mysql myclre_mysql 索引及查询优化总结
  8. 阿里平头哥“生娃”!最强 RISC-V 处理器玄铁 910 诞生!
  9. matlab2c使用c++实现matlab函数系列教程-circshift函数
  10. HDU1166-ZKW树
  11. Zener二极管(稳压二极管)型号对照表--1N52xx系列
  12. 淘宝API 淘口令解析(POST)
  13. oracle ogg数据格式转换,Oracle 19C OGG基础运维-02数据初始化
  14. 企小码会话存档使用教程——删人提醒
  15. 基于微信小程序的垃圾分类小程序(语音识别和历史记录查询)(源码已开源)
  16. Android实现用户圆形头像+背景模糊
  17. ArcGIS API for JavaScript根据两个点坐标在地图上画线
  18. cms php 带商城系统下载,开源免费PHP商城CMS系统集合
  19. 安卓 build.prop 进行修改提高性能
  20. 开源影像tif切图工具gdal2tiles部署以及切图

热门文章

  1. 2021牛客暑期多校训练营3 B Black and white 最小生成树 + 思维
  2. Codeforces Round #635 (Div. 2) D. Xenia and Colorful Gems 暴力 + 二分
  3. HDU - 1811 Rank of Tetris 并查集 + 拓扑序 +me
  4. 【杭电多校2020】Total Eclipse【贪心】【并查集】
  5. Manacher 例题讲解
  6. [CQOI2017] 老C的键盘(树形dp + 组合数)
  7. 【用学校抄作业带你走进可持久化线段树(主席树)】可持久化线段树概念+全套模板+例题入门:[福利]可持久化线段树)
  8. P4542-[ZJOI2011]营救皮卡丘【费用流,Floyd】
  9. 欢乐纪中B组周五模拟赛【2019.3.8】
  10. 主席树 - 可持久化线段树