在python3中使用shuffle函数要注意的地方


Posted in Python onFebruary 28, 2020

1 shuffle函数与其他函数不一样的地方

shuffle函数没有返回值!shuffle函数没有返回值!shuffle函数没有返回值!仅仅是实现了对list元素进行随机排序的一种功能

请看下面的坑

1.1 误认为shuffle函数会有一个返回值的错误例子

num1 = list(range(1,39526)) #产生1-39525的数
num2 = random.shuffle(num1)
num3 = num2[0:30000] #取前30000个行号的元素
num4 = num2[30000:39524] #取到后面9525个元素

执行结果:

File "E:/pythonProj/test2/readDatasetCSVfile.py", line 122, in <module>
 num3 = num2[0:30000] #取前30000个行号的元素
 TypeError: 'NoneType' object is not subscriptable

从这个错误中我们也可以看出来,指明obiect没有类型,其实现在这个num2中是null,什么也没有,因为shuffle没有返回值,所以自然会报这种类型的错误。

1.2 正确使用shuffle函数的例子

num1 = list(range(1,39526)) #产生1-39525的数
random.shuffle(num1) #注意shuffle没有返回值,该函数完成一种功能,就是对list进行排序打乱
num3 = num1[0:30000] #取前30000个行号的元素
num4 = num1[30000:39524] #取到后面9525个元素

这个时候才顺利运行通过!

补充拓展:对python中使用shuffle和permutation对列表进行随机洗牌的区别

函数:shuffle将列表的所有元素随机排序,不生成新的数组返回

示例:

import random

list = [20, 16, 10, 5];
random.shuffle(list) # 参数只能是列表,元组、字典、字符串会报错
print("随机排序列表 : ", list)
random.shuffle(list)
print("随机排序列表 : ", list)

执行结果:

在python3中使用shuffle函数要注意的地方

函数:permutation 返回排列范围的随机列表或返回一个新的打乱顺序的数组,并不改变原来的数组,

如果输入是一个多维数组,则它只沿其第一个索引进行无序排列

示例:

import numpy as np
new_arr = np.random.permutation(10)
print(new_arr)
new_arr1 = np.random.permutation([1, 4, 9, 12, 15]) # 参数为列表
print(new_arr1)
arr = np.arange(9).reshape((3, 3))
new_arr2 = np.random.permutation(arr)
print(new_arr2)
new_arr3 = np.random.permutation([{"a": 1, "b": 2}, [{"e": 5}, {"c": 3}, {"d": 4}], [{"f": 6}, {"g": 8}]])# 子数组中的排列顺序不变
print(new_arr3)
new_arr4 = np.random.permutation((1, 4, 9, 12, 15)) #可以传元组参数
print(new_arr4)
import numpy as np
new_arr = np.random.permutation(10)
print(new_arr)
new_arr1 = np.random.permutation([1, 4, 9, 12, 15])
print(new_arr1)
arr = np.arange(9).reshape((3, 3))
new_arr2 = np.random.permutation(arr)
print(new_arr2)
new_arr3 = np.random.permutation([{"a": 1, "b": 2}, [{"e": 5}, {"c": 3}, {"d": 4}], [{"f": 6}, {"g": 8}]]) # 子数组中的排列顺序不变
print(new_arr3)

执行结果:

在python3中使用shuffle函数要注意的地方

以上这篇在python3中使用shuffle函数要注意的地方就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python与shell的3种交互方式介绍
Apr 11 Python
使用基于Python的Tornado框架的HTTP客户端的教程
Apr 24 Python
Python中进程和线程的区别详解
Oct 29 Python
Python爬虫包BeautifulSoup实例(三)
Jun 17 Python
解决python3 urllib 链接中有中文的问题
Jul 16 Python
Django教程笔记之中间件middleware详解
Aug 01 Python
Python学习笔记之While循环用法分析
Aug 14 Python
python实现while循环打印星星的四种形状
Nov 23 Python
Python爬虫教程知识点总结
Oct 19 Python
装上这 14 个插件后,PyCharm 真的是无敌的存在
Jan 11 Python
Opencv 图片的OCR识别的实战示例
Mar 02 Python
python 如何读、写、解析CSV文件
Mar 03 Python
Python对称的二叉树多种思路实现方法
Feb 28 #Python
pycharm如何实现跨目录调用文件
Feb 28 #Python
python GUI库图形界面开发之PyQt5菜单栏控件QMenuBar的详细使用方法与实例
Feb 28 #Python
python 爬虫 实现增量去重和定时爬取实例
Feb 28 #Python
浅谈python元素如何去重,去重后如何保持原来元素的顺序不变
Feb 28 #Python
python GUI库图形界面开发之PyQt5日期时间控件QDateTimeEdit详细使用方法与实例
Feb 27 #Python
Python递归求出列表(包括列表中的子列表)的最大值实例
Feb 27 #Python
You might like
php处理带有中文URL的方法
2016/07/11 PHP
详解thinkphp实现excel数据的导入导出(附完整案例)
2016/12/29 PHP
鼠标经过显示二级菜单js特效
2013/08/13 Javascript
jquery parent和parents的区别分析
2013/10/02 Javascript
Js获取数组最大和最小值示例代码
2013/10/29 Javascript
使用基于Node.js的构建工具Grunt来发布ASP.NET MVC项目
2016/02/15 Javascript
javascript每日必学之循环
2016/02/19 Javascript
Bootstrap选项卡与Masonry插件的完美结合
2016/07/06 Javascript
详解vue之页面缓存问题(基于2.0)
2017/01/10 Javascript
深入理解AngularJS中的ng-bind-html指令
2017/03/27 Javascript
详解Chai.js断言库API中文文档
2018/01/31 Javascript
vue2中,根据list的id进入对应的详情页并修改title方法
2018/08/24 Javascript
webpack+vue+express(hot)热启动调试简单配置方法
2018/09/19 Javascript
js实现数字滚动特效
2019/12/16 Javascript
使用python Django做网页
2013/11/04 Python
初步认识Python中的列表与位运算符
2015/10/12 Python
python字符串连接方法分析
2016/04/12 Python
使用Python进行目录的对比方法
2018/11/01 Python
python递归法实现简易连连看小游戏
2020/03/25 Python
全面了解django的缓存机制及使用方法
2019/07/22 Python
Python八皇后问题解答过程详解
2019/07/29 Python
python Elasticsearch索引建立和数据的上传详解
2019/08/04 Python
python分布式爬虫中消息队列知识点详解
2020/11/26 Python
简单总结CSS3中视窗单位Viewport的常见用法
2016/02/04 HTML / CSS
Corelle官方网站:购买康宁餐具
2016/11/02 全球购物
介绍下static、final、abstract区别
2015/01/30 面试题
日语专业毕业生自荐信
2013/11/11 职场文书
岳父生日宴会答谢词
2014/01/13 职场文书
护理中职生求职信范文
2014/02/24 职场文书
高考备战决心书
2014/03/11 职场文书
办公设备采购方案
2014/03/16 职场文书
经典促销广告词大全
2014/03/19 职场文书
2015年调度员工作总结
2015/04/30 职场文书
沂蒙六姐妹观后感
2015/06/08 职场文书
就业证明函
2015/06/17 职场文书
oracle数据库去除重复数据
2022/05/20 Oracle