在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的web框架编写前端模版的教程
Apr 30 Python
判断python字典中key是否存在的两种方法
Aug 10 Python
一行代码让 Python 的运行速度提高100倍
Oct 08 Python
对python for 文件指定行读写操作详解
Dec 29 Python
python字典的setdefault的巧妙用法
Aug 07 Python
Python Opencv提取图片中某种颜色组成的图形的方法
Sep 19 Python
pygame实现俄罗斯方块游戏(AI篇1)
Oct 29 Python
Python如何读取文件中图片格式
Jan 13 Python
PyCharm 2020 激活到 2100 年的教程
Mar 25 Python
Pytorch环境搭建与基本语法
Jun 03 Python
Python os库常用操作代码汇总
Nov 03 Python
Python基础之pandas数据合并
Apr 27 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(视频)Http下载
2006/12/12 PHP
用PHP写的MySQL数据库用户认证系统代码
2007/03/22 PHP
Base64在线编码解码实现代码 演示与下载
2011/01/08 PHP
7个超级实用的PHP代码片段
2011/07/11 PHP
PHP防CC攻击实现代码
2011/12/29 PHP
利用php+mcDropdown实现文件路径可在下拉框选择
2013/08/07 PHP
php中simplexml_load_file函数用法实例
2014/11/12 PHP
PHP中preg_match正则匹配中的/u、/i、/s含义
2015/04/17 PHP
PHP基于单例模式实现的mysql类
2016/01/09 PHP
认识延迟时间为0的setTimeout
2008/05/16 Javascript
IE8中动态创建script标签onload无效的解决方法
2014/12/22 Javascript
jQuery实现带玻璃流光质感的手风琴特效
2015/11/20 Javascript
JS代码随机生成姓名、手机号、身份证号、银行卡号
2016/04/27 Javascript
js 弹出对话框(遮罩)透明,可拖动的简单实例
2016/07/11 Javascript
vue2.0的contextmenu右键弹出菜单的实例代码
2017/07/24 Javascript
解读ES6中class关键字
2017/11/20 Javascript
nodejs实现OAuth2.0授权服务认证
2017/12/27 NodeJs
vue-cli3.0如何使用CDN区分开发、生产、预发布环境
2018/11/22 Javascript
原生JS检测CSS3动画是否结束的方法详解
2019/01/27 Javascript
js作用域和作用域链及预解析
2019/04/11 Javascript
运用js实现图层拖拽的功能
2019/05/24 Javascript
[07:20]2018DOTA2国际邀请赛寻真——逐梦Mineski
2018/08/10 DOTA
[03:43]TI9战队采访——PSG.LGD
2019/08/22 DOTA
Python函数式编程指南(四):生成器详解
2015/06/24 Python
Python 中的range(),以及列表切片方法
2018/07/02 Python
Python中使用pypdf2合并、分割、加密pdf文件的代码详解
2019/05/21 Python
python图形用户接口实例详解
2019/12/16 Python
Python 保存加载mat格式文件的示例代码
2020/08/04 Python
Topman美国官网:英国著名的国际平价时尚男装品牌
2017/12/22 全球购物
巴西电子、家电、智能手机购物网站:Girafa
2019/06/04 全球购物
教师自我评价范例
2013/09/24 职场文书
通信工程毕业生自荐信
2013/11/01 职场文书
假期安全教育广播稿
2014/10/04 职场文书
学习保证书怎么写
2015/02/26 职场文书
Java Spring 控制反转(IOC)容器详解
2021/10/05 Java/Android
PostgreSQL 插入INSERT、删除DELETE、更新UPDATE、事务transaction
2022/04/12 PostgreSQL