在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基础教程之Hello World!
Aug 29 Python
Python多线程实例教程
Sep 06 Python
跟老齐学Python之眼花缭乱的运算符
Sep 14 Python
Django1.7+python 2.78+pycharm配置mysql数据库教程
Nov 18 Python
Python利用ElementTree模块处理XML的方法详解
Aug 31 Python
python3解析库lxml的安装与基本使用
Jun 27 Python
在Python中定义一个常量的方法
Nov 10 Python
python自定义线程池控制线程数量的示例
Feb 22 Python
flask实现验证码并验证功能
Dec 05 Python
python读取hdfs并返回dataframe教程
Jun 05 Python
接口自动化多层嵌套json数据处理代码实例
Nov 20 Python
Django项目在pycharm新建的步骤方法
Mar 02 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
Optimizer与Debugger兼容性问题的解决方法
2008/12/01 PHP
PHP实现动态柱状图改进版
2015/03/30 PHP
php实现压缩合并js的方法【附demo源码下载】
2016/09/22 PHP
php实现当前页面点击下载文件的实例代码
2016/11/16 PHP
Yii2实现多域名跨域同步登录退出
2017/02/04 PHP
php取出数组单个值的方法
2018/03/12 PHP
PHP调用微博接口实现微博登录的方法示例
2018/09/22 PHP
鼠标滑上去后图片放大浮出效果的js代码
2011/05/28 Javascript
同时使用n个window onload加载实例介绍
2013/04/25 Javascript
多次注册事件会导致一个事件被触发多次的解决方法
2013/08/12 Javascript
纯JavaScript代码实现移动设备绘图解锁
2015/10/16 Javascript
JavaScript、tab切换完整版(自动切换、鼠标移入停止、移开运行)
2016/01/05 Javascript
基于JavaScript实现div层跟随滚动条滑动
2016/01/12 Javascript
详解js实现线段交点的三种算法
2016/08/09 Javascript
详解js前端代码异常监控
2017/01/11 Javascript
详解如何在vue项目中使用eslint+prettier格式化代码
2018/11/10 Javascript
vue单应用在ios系统中实现微信分享功能操作
2020/09/07 Javascript
Python多线程学习资料
2012/12/19 Python
Python常用时间操作总结【取得当前时间、时间函数、应用等】
2017/05/11 Python
Numpy array数据的增、删、改、查实例
2018/06/04 Python
python去除文件中重复的行实例
2018/06/29 Python
Python中查看变量的类型内存地址所占字节的大小
2019/06/26 Python
TensorFlow使用Graph的基本操作的实现
2020/04/22 Python
深入理解css属性的选择对动画性能的影响
2016/04/20 HTML / CSS
HTML 5 标签、属性、事件及浏览器兼容性速查表 附打包下载
2012/10/20 HTML / CSS
利用三角函数在canvas上画虚线的方法
2018/01/11 HTML / CSS
个人作风剖析材料
2014/02/02 职场文书
《巨人的花园》教学反思
2014/02/12 职场文书
社区平安建设汇报材料
2014/08/14 职场文书
关于读书的演讲稿500字
2014/08/27 职场文书
授权委托书公证
2014/09/14 职场文书
大学生职业生涯规划大赛作品(精品)
2014/09/17 职场文书
加强机关作风建设心得体会
2014/10/22 职场文书
离开雷锋的日子观后感
2015/06/09 职场文书
《打电话》教学反思
2016/02/22 职场文书
win10输入法不见了只能打出字母怎么解决?
2022/08/05 数码科技