python random函数shuffle_Python|有趣的shuffle方法
Pythonrandom的“shuffle方法随机化序列项”是我们在学习中会经常遇到的一个知识点,今天我们就来简单的学习一下吧!
解决方案
在学习这个方法时我们就要了解他是怎样构成的。
第一:Python这门编程语言
第二:第三方库
第三:此函数
首先我们来介绍一下这个第三方库,random库是使用随机数的Python标准库,利用这个库可以随机的生成指定范围的随机数。下面我们简单的介绍一下他的用法。我们通过一张图来了解一下它。
image
简单了解random库的使用方法后,我们再来了解一下shuffle函数。我们将学习如何使用随机模块的shuffle方法来混洗数据。另外,学习如何随机播放 Python中的列表和字符串。我们在使用这个函数时一定要首先引入random库,否则是代码是不能够执行的。
在这推荐下小编创建的Python学习交流群835017344,可以获取Python入门基础教程,送给每一位小伙伴,这里是小白聚集地,每天还会直播和大家交流分享经验哦,欢迎初学和进阶中的小伙伴。
1、random.shuffle的语法
random.shuffle(x,随机)
shuffle方法有两个参数。两个随机数中的一个是可选参数。无序播放法,用于将序列无序播放到位。也就是说,它改变了列表中项目的位置。我们称之为随机化列表中的元素。
2、Python使用random.shuffle对列表进行洗牌
import random
number_list = [7,14,21,28,35,42,49,56,63,70]
print("原始列表:",number_list)
random.shuffle(number_list) #shuffle方法
print("第一次洗牌之后的列表:",number_list)
random.shuffle(number_list)
print("第二次洗牌之后列出:",number_list)
原始列表: [7, 14, 21, 28, 35, 42, 49, 56, 63, 70]
first shuffle:之后的列表: [35, 28, 70, 14, 21, 63, 7, 49, 42, 56]
第二次洗牌之后列出: [21, 7, 70, 28, 56, 14, 63, 42, 35, 49]
这个就是对列表洗牌的结果,我们可以从输出的结果中看到,每个项目的位置已经改变。解决我们的免费随机数据生成练习,掌握Python中的随机数据生成技术。
2.1 使用random.shuffle()随机播放字符串列表
import random
string_list = ["Paint It Black","Gimme Shelter","同情魔鬼","满意","你不能总是得到你想要的东西"]
print("原始字符串列表:",string_list)
random.shuffle(string_list) #shuffle方法
print("第一次shuffle之后的字符串列表:",string_list)
random.shuffle(string_list)
print("第二次shuffle后的字符串列表:",string_list)
原始字符串列表: ['Paint It Black', 'Gimme Shelter', '同情魔鬼', '满意', '你不能总是得到你想要的东西']
第一次shuffle之后的字符串列表: ['Gimme Shelter', '你不能总是得到你想要的东西', '同情魔鬼', 'Paint It Black', '满意']
第二次shuffle后的字符串列表: ['满意', 'Gimme Shelter', 'Paint It Black', '你不能总是得到你想要的东西', '同情魔鬼']
这个和上面的那个例子是一样的。
2.2 Python shuffling list每次都能获得相同的结果
如何使用参数对列表进行无序排列,以便每次进行无序排列时都产生相同的结果?
使用随机模块的random.seed()方法,每次洗牌都可能产生相同的结果。让我们看看如何将种子方法与随机播放方法结合使用。
import random
numbers = [10, 20, 30, 40, 50, 60]
print ("Original list: ", numbers )
random.seed(4)
random.shuffle(numbers)
print("reshuffled list ", numbers)
numbers = [10, 20, 30, 40, 50, 60]
random.seed(4)
random.shuffle(numbers)
print("reshuffled list ", numbers)
Original list: [10, 20, 30, 40, 50, 60]
reshuffled list [40, 60, 50, 10, 30, 20]
reshuffled list [40, 60, 50, 10, 30, 20]
注意:因为每次调用shuffle方法之前使用相同的seed值时,在执行多次shuffle操作之后,我们都会得到相同的列表。
3、在Python中改组一个字符串
random.shuffle不适用于字符串。也就是说,它不能接受字符串参数。如果尝试执行以下操作,将出现错误。
image
我们得到类型错误:“str”对象不支持项分配。然后如何洗牌字符串的字符。我们可以使用各种方法来实现这一点。让我们逐一讨论。
将字符串转换为字符列表。
随机地拖动字符列表。
将无序排列的列表转换为字符串。
import random
string_one = "pynative"
print ("Original String: ", string_one)
char_list = list(string_one) # convert string inti list
random.shuffle(char_list) #shuffle the list
string_one = ''.join(char_list)
print ("shuffled String is: ", string_one)
Original String: pynative
shuffled String is: eytavpin
这样我们就能够正常的执行代码了
4、Python随机的shuffle not-in-place
正如我们已经讨论过的,随机洗牌在适当的位置进行,没有返回任何内容。现在让我们来看看如何在不适当的位置无序排列列表。要执行不到位的无序播放,我们需要使用简单的随机模块方法。random.sample()方法返回新列表,其中包含传递给它的样本大小。如果我们传递的示例大小与列表的大小相同,它将返回新列表,该列表是原始列表的无序版本。让我们用一个例子来做这个。
import random
numbers = [5, 10, 15, 20, 25]
print ("Original list : ", numbers)
new_list = random.sample(numbers, len(numbers))
print ("List after not in-place shuffle : ", new_list)
Original list : [5, 10, 15, 20, 25]
List after not in-place shuffle : [25, 5, 10, 20, 15]
如您所见,我们使用了一个示例方法来执行非就地无序播放。
我们首先定义了一个新的列表来存储新的排序,再用新的方法来对其进行随机排序。
5、使用相同的顺序一次洗牌两个Python列表
假设您想随机播放两个列表,但又想保持相同的随机播放顺序。例如,一个列表包含学生姓名,另一个列表包含成绩。
import random
empName = ['Jhon', 'Emma', 'Kelly', 'Jason']
empAchievement = [90, 85, 87, 100]
print("Print Lists Before Shuffling")
print("List Employee Names: ", empName)
print("List Employee Salary: ", empAchievement)
mapIndexPosition = list(zip(empName, empAchievement))
random.shuffle(mapIndexPosition)
empName, empAchievement = zip(*mapIndexPosition)
print("\nPrint Lists after Shuffling")
print("List Employee Names: ", empName)
print("List Employee Salary: ", empAchievement)
Print Lists Before Shuffling
List Employee Names: ['Jhon', 'Emma', 'Kelly', 'Jason']
List Employee Achievement: [90, 85, 87, 100]
Print Lists after Shuffling
List Employee Names: ('Jason', 'Jhon', 'Kelly', 'Emma')
List Employee Achievement: (100, 90, 87, 85)
这样两个列表就能够同时随机变换位置了。
6、在Python中改组多维数组
假设您有一个多维数组,并且想要对其进行无序排列。在这个例子中,我使用numpy模块创建一个二维数组。另外,使用numpy.random.shuffle()方法,我们可以对多维数组进行无序处理。
现在,让我们看看如何在Python中无序排列多维数组。
import numpy
print("Before Shufflling 2-dimensional array in Python")
sampleArray = numpy.arange(100, 240, 10)
sampleArray = sampleArray.reshape(7,2)
print (sampleArray)
print("After Shufflling 2-dimensional array in Python")
newArray = numpy.random.shuffle(sampleArray)
print (sampleArray)
Before Shufflling 2-dimensional array in Python
[[100 110]
[120 130]
[140 150]
[160 170]
[180 190]
[200 210]
[220 230]]
After Shufflling 2-dimensional array in Python
[[100 110]
[140 150]
[160 170]
[180 190]
[120 130]
[200 210]
[220 230]]
这样我们就可以对多维数组进行无序排列了。
7、在Python中随机播放字典
在python中不可能修改字典。但是,我们可以重新排列字典键的迭代顺序。从字典中提取所有键并将其添加到列表中,无序排列该列表并使用新无序排列的键访问字典值。
import random
studentDict = {'Eric':80, 'Scott':75, 'Jessa':95, 'Mike':66}
print("Dictionary Before Shuffling")
print(studentDict)
keys = list(studentDict.keys())
random.shuffle(keys)
ShuffledStudentDict = dict()
for key in keys:
ShuffledStudentDict.update({key:studentDict[key]})
print("\nDictionary after Shuffling")
print(ShuffledStudentDict)
Dictionary Before Shuffling
{'Eric': 80, 'Scott': 75, 'Jessa': 95, 'Mike': 66}
Dictionary after Shuffling
{'Mike': 66, 'Scott': 75, 'Eric': 80, 'Jessa': 95}
我们都知道字典中键和值是一一对应的,我们通过相应的键获取对应的值。,在上面的随机变换中我们先获取键,然后在通过键获取对应值的数据
结语
通过上面对shuffle函数的学习,我们需要注意的是以下几点:
1、在使用这个函数时我们一定要记得引入相应的库,在这个函数中我们常用的库有random库和numpy库,我们引入库之后再执行相应的代码。
2、在shuffle函数中是不能够接受字符串这种数据类型的,我们需要将字符串转换成其他数据类型。如果直接输入字符串则会报错。
python random函数shuffle_Python|有趣的shuffle方法相关推荐
- python random函数原理_Python random() 函数
描述 random() 方法返回随机生成的一个实数,它在[0,1)范围内. 语法 以下是 random() 方法的语法: import random random.random() 注意:random ...
- python中怎么调用函数_浅谈Python中函数的定义及其调用方法
一.函数的定义及其应用 所谓函数,就是把具有独立功能的代码块组织成为一个小模块,在需要的时候调用函数的使用包含两个步骤 1.定义函数–封装独立的功能 2.调用函数–享受封装的成果 函数的作用:在开发时 ...
- python函数定义及调用-浅谈Python中函数的定义及其调用方法
一.函数的定义及其应用 所谓函数,就是把具有独立功能的代码块组织成为一个小模块,在需要的时候调用函数的使用包含两个步骤 1.定义函数�C封装独立的功能 2.调用函数�C享受封装的成果 函数的作用:在开 ...
- Python Lambda函数的几种使用方法
在进行编程时,一般我们会给一个函数或者变量起一个名字,该名称是用于引用或寻址函数变量.但是有一个低调的函数,你不需要赋予它名字,因此该函数也叫匿名函数.该函数就是Python中的Lambda函数,下面 ...
- python中shuffle怎么用_Python|有趣的shuffle方法
问题描述 Pythonrandom的"shuffle方法随机化序列项"是我们在学习中会经常遇到的一个知识点,今天我们就来简单的学习一下吧!解决方案 在学习这个方法时我们就要了解他是 ...
- 有趣的shuffle方法
问题描述 Python random的"shuffle方法随机化序列项"是我们在学习中会经常遇到的一个知识点,今天我们就来简单的学习一下吧! 解决方案 在学习这个方法时我们就要了解 ...
- Python random()函数
描述: random()函数用于生成随机数 语法: 首先需要导入random模块,随后调用模块中的各种函数生成各类随机数 import random a=random.fuc() 用法总结 rando ...
- python random函数_Python随机函数random使用详解
在python中用于生成随机数的模块是random,在使用前需要import, 下面看下它的用法. 1.random.random random.random()用于生成一个0到1的随机符点数: 0 ...
- python isnumeric函数用法_Python中isnumeric()方法的使用简介
Python中isnumeric()方法的使用简介 更新时间:2015年05月19日 09:35:06 投稿:goldensun 这篇文章主要介绍了Python中isnumeric()方法的使用,is ...
最新文章
- Ueditor的两种定制方式
- 学习Python不错的网站
- Shell脚本中command not found报错处理
- 近世代数--有限交换群--存在子群的阶是群阶的因子
- 160个Crackme034拆解KeyFile验证升级版
- 【软件测试】测试驱动开发
- Linux下 RPM 包和Deb包的安装(代码指令+案列)
- Quartz.NET常用方法 01
- php shell,php命令行写shell实例详解
- 541页《利用Python进行数据分析》分享(附源码下载)
- 备忘:gcc在linux下打包so库并调用
- 8个前端技术学习网站
- matlab2014b下载 32位,matlab 2014b 32位
- Axure 7.0教程_小楼作品(十六)多值单变量的页面传值
- USB大容量存储设备无法启动--这个设备(服务)的驱动程序已被禁用。另一个驱动程序可以提供这个功能。 (代码 32)
- 二极管和三极管介绍-二极管和三极管的区别及工作原理详解-KIA MOS管
- 《手把手陪您学Python》24——集合
- [朴孝敏][Ooh La La]
- pyscripter与python的关系_Pyscripter是python下一个非常流行的开源IDE
- 【BLE】蓝牙Profile
热门文章
- 平衡二叉树(AVL树)和红黑树区别
- Android5.0 netd架构流程
- OpenGL纹理本质(三)
- android 5.1禁止休眠
- postgis之获取二进制的长度
- Vue提示warn:”[vue-router] Named Route ‘home’ has a default child route…”
- 购买云服务器时如何选择适合的数据库?
- 计算机round是什么函数,round函数
- windows系统vbs脚本 提取文件夹中的所有文件名
- 彻底解决VS中找不到 Windows SDK 版本 8.1的错误