python 随机排序_Python 如何随机打乱列表(List)排序
场景:
现在有一个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)排序相关推荐
- python字符串排序_Python-如何对字符串列表进行排序?
小编典典 基本答案: mylist = ["b", "C", "A"] mylist.sort() 这会修改你的原始列表(即就地排序).要获 ...
- 大乐透python预测程序_Python生成随机验证码,大乐透号码
随机生成验证码 示例代码: import random # 导入标准模块中的random if __name__ == '__main__': check_code = "" # ...
- python输出姓名_Python生成随机不重复姓名昵称
姓采用百家姓,名字从常用名字高频字选取两个汉字,再和当前时间戳组合,估计应该是不会重复了,代码如下: # -*- coding:utf-8 -*- import random import time ...
- python如何完成列表的排序_Python要如何实现列表排序的几种方法
排序,是许多编程语言中经常出现的问题.同样的,在Python中,如何是实现排序呢?(以下排序都是基于列表来实现) 一.使用Python内置函数进行排序 Python中拥有内置函数实现排序,可以直接调用 ...
- python dict排序_python 字典(dict)按键和值排序
python 字典(dict)的特点就是无序的,按照键(key)来提取相应值(value),如果我们需要字典按值排序的话,那可以用下面的方法来进行: 1 下面的是按照value的值从大到小的顺序来排序 ...
- python按日期排序_Python List拆分,按日期排序,然后加入
好吧,我已经在这里待了好几个小时了,我承认失败,请求你的宽恕. 目标:我有多个文件(银行对账单下载),我想合并.排序.删除重复项. 下载的格式如下: 1 2 3 4 5 6 7 8"08/0 ...
- python字典按照key排序_python中字典按key值排序的实现方法
之前小编介绍了字典本身不可排序,但按值可以,小编也介绍了按value值排序的三种方法.sorted()函数可以对数字或字符串进行排序,按key排序只是输出的key值的排序列表,使用sorted()函数 ...
- python从键盘获取输入并排序_python从键盘输入数字并排序-女性时尚流行美容健康娱乐mv-ida网...
女性时尚流行美容健康娱乐mv-ida网 mvida时尚娱乐网 首页 美容 护肤 化妆技巧 发型 服饰 健康 情感 美体 美食 娱乐 明星八卦 首页 > 高级搜索 python 读取 键盘 输入 ...
- python list排序_Python中字符串List按照长度排序
下面看下字符串List按照长度排序(python)的实现方法 myList = ['青海省','内蒙古自治区','西藏自治区','新疆维吾尔自治区','广西壮族自治区'] 1.首先得到每个字符串长度 ...
最新文章
- 使用jquery实现的计算器功能
- android 代码打开权限,android开发权限询问的示例代码
- UVA11078开放式学分制(前面-后面的最大值)
- 深度学习、机器学习、机器人操作系统、人工智能学习资源
- SpringBoot:Actuator 监控管理工程各项信息
- sqlserver oracle对比,sqlserver和oracle常用函数对比
- mysql myclre_mysql 索引及查询优化总结
- 阿里平头哥“生娃”!最强 RISC-V 处理器玄铁 910 诞生!
- matlab2c使用c++实现matlab函数系列教程-circshift函数
- HDU1166-ZKW树
- Zener二极管(稳压二极管)型号对照表--1N52xx系列
- 淘宝API 淘口令解析(POST)
- oracle ogg数据格式转换,Oracle 19C OGG基础运维-02数据初始化
- 企小码会话存档使用教程——删人提醒
- 基于微信小程序的垃圾分类小程序(语音识别和历史记录查询)(源码已开源)
- Android实现用户圆形头像+背景模糊
- ArcGIS API for JavaScript根据两个点坐标在地图上画线
- cms php 带商城系统下载,开源免费PHP商城CMS系统集合
- 安卓 build.prop 进行修改提高性能
- 开源影像tif切图工具gdal2tiles部署以及切图
热门文章
- 2021牛客暑期多校训练营3 B Black and white 最小生成树 + 思维
- Codeforces Round #635 (Div. 2) D. Xenia and Colorful Gems 暴力 + 二分
- HDU - 1811 Rank of Tetris 并查集 + 拓扑序 +me
- 【杭电多校2020】Total Eclipse【贪心】【并查集】
- Manacher 例题讲解
- [CQOI2017] 老C的键盘(树形dp + 组合数)
- 【用学校抄作业带你走进可持久化线段树(主席树)】可持久化线段树概念+全套模板+例题入门:[福利]可持久化线段树)
- P4542-[ZJOI2011]营救皮卡丘【费用流,Floyd】
- 欢乐纪中B组周五模拟赛【2019.3.8】
- 主席树 - 可持久化线段树