在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中的文件和目录操作实现代码
Mar 13 Python
Python中对列表排序实例
Jan 04 Python
Python编码爬坑指南(必看)
Jun 10 Python
修复CentOS7升级Python到3.6版本后yum不能正确使用的解决方法
Jan 26 Python
Python 找到列表中满足某些条件的元素方法
Jun 26 Python
Python中实例化class的执行顺序示例详解
Oct 14 Python
使用selenium模拟登录解决滑块验证问题的实现
May 10 Python
Python 获取 datax 执行结果保存到数据库的方法
Jul 11 Python
python实现通过flask和前端进行数据收发
Aug 22 Python
详解Python中打乱列表顺序random.shuffle()的使用方法
Nov 11 Python
QML用PathView实现轮播图
Jun 03 Python
使用Django实现商城验证码模块的方法
Jun 01 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
3
2006/10/09 PHP
通过对服务器端特性的配置加强php的安全
2006/10/09 PHP
php flush类输出缓冲剖析
2008/10/19 PHP
PHP获取类中常量,属性,及方法列表的方法
2009/04/09 PHP
apache配置虚拟主机的方法详解
2013/06/17 PHP
PHP实现利用MySQL保存session的方法
2014/08/23 PHP
php使用iconv中文截断问题的解决方法
2015/02/11 PHP
php+ajax实现的点击浏览量加1
2015/04/16 PHP
WordPress中查询文章的循环Loop结构及用法分析
2015/12/17 PHP
PHP 闭包详解及实例代码
2016/09/28 PHP
关于PHP中字符串与多进制转换函数的实例代码
2016/11/03 PHP
PHP面向对象程序设计内置标准类,普通数据类型转为对象类型示例
2019/06/12 PHP
js 鼠标点击事件及其它捕获
2009/06/04 Javascript
关于include标签导致js路径找不到的问题分析及解决
2013/07/09 Javascript
通过action传过来的值在option获取进行验证的方法
2013/11/14 Javascript
js 数组去重的四种实用方法
2014/09/09 Javascript
JavaScript函数参数使用带参数名的方式赋值传入的方法
2015/03/19 Javascript
JS实现自动切换文字的导航效果代码
2015/08/27 Javascript
Linux下为Node.js程序配置MySQL或Oracle数据库的方法
2016/03/19 Javascript
Bootstrap基本样式学习笔记之标签(5)
2016/12/07 Javascript
JS设计模式之访问者模式定义与用法分析
2018/02/05 Javascript
[03:30]DOTA2完美“圣”典精彩集锦
2016/12/27 DOTA
Python合并多个装饰器小技巧
2015/04/28 Python
对numpy的array和python中自带的list之间相互转化详解
2018/04/13 Python
Python反射和内置方法重写操作详解
2018/08/27 Python
浅谈numpy生成数组的零值问题
2018/11/12 Python
python中的协程深入理解
2019/06/10 Python
Python3网络爬虫中的requests高级用法详解
2019/06/18 Python
用python给csv里的数据排序的具体代码
2020/07/17 Python
香港士多网上超级市场:Ztore
2021/01/09 全球购物
一个SQL面试题
2014/08/21 面试题
护理不良事件检讨书
2014/02/06 职场文书
2014年领导班子工作总结
2014/12/11 职场文书
销售助理岗位职责
2015/02/11 职场文书
幼师中班个人总结
2015/02/12 职场文书
为什么代码规范要求SQL语句不要过多的join
2021/06/23 MySQL