本章目录:
十、随机列表元素
方法1:random.shuffle
方法2:random.sample
方法1:random.shuffle |
|
可以使用shuffle函数进行随机列表元素,是打乱序列里面的元素,并随机排列的。 |
|
语 法 |
shuffle(listname) |
参 数 |
|
注 意 |
shuffle()需要导入 random 模块,然后通过 random 静态对象调用该方法。 shuffle函数中是不能够接受字符串这种数据类型的,需要将字符串转换成其他数据类型。 如果直接输入字符串则会报错。 |
返 回 值 |
该函数没有返回值 |
知识拓展 |
1、使用参数对列表进行无序排列,每次无序排列时都会产生相同的结果 使用随机模块的random.seed()方法,每次随机洗牌都可能产生相同的结果。将种方法与随机播放方法结合使用,即每次调用shuffle方法之前使用相同的seed值时,在执行多次shuffle操作之后,我们都会得到相同的列表。 2、random.shuffle不适用于字符串。它不能接受字符串参数,将出现错误。 TypeError:'str' object does not support item assignment 得到类型错误:“str”对象不支持项分配。 解决办法: 将字符串转换为字符列表。随机地转换字符列表序列,再将无序排列的列表转换为字符串 |
实 例 |
|
代 码 |
from random import shuffle mlist= ["小猫咪", "小白兔", "小青蛙", "小狗狗", "大灰狼", "小鸟"] print(mlist) shuffle(mlist) print(mlist) |
运行结果 |
['小猫咪', '小白兔', '小青蛙', '小狗狗', '大灰狼', '小鸟'] ['小白兔', '大灰狼', '小狗狗', '小猫咪', '小鸟', '小青蛙'] |
代 码 |
from random import shuffle mlist= [1,2,3,4,5,6,7,8] print(mlist) shuffle(mlist) print(mlist) |
运行结果 |
[1, 2, 3, 4, 5, 6, 7, 8] [4, 6, 8, 1, 3, 5, 7, 2] |
#使用random.shuffle随机播放字符串列表 | |
代 码 |
from random import shuffle mlist= ["愿你开怀永不孤单,让快乐弥漫", "愿星光为你,漆黑里指路", "愿清风为你,吹走那苦闷", "逆境清醒愿你战胜自己昂首扬帆将来"] shuffle(mlist) print("第一次shuffle之后的随机字符串列表:",mlist) shuffle(mlist) print("第二次shuffle之后的随机字符串列表:",mlist) shuffle(mlist) print("第三次shuffle之后的随机字符串列表:",mlist) shuffle(mlist) print("第四次shuffle之后的随机字符串列表:",mlist) |
运行结果 |
第一次shuffle之后的随机字符串列表: ['愿清风为你,吹走那苦闷', '愿星光为你,漆黑里指路', '愿你开怀永不孤单,让快乐弥漫', '逆境清醒愿你战胜自己昂首扬帆将来'] 第二次shuffle之后的随机字符串列表: ['愿你开怀永不孤单,让快乐弥漫', '愿清风为你,吹走那苦闷', '愿星光为你,漆黑里指路', '逆境清醒愿你战胜自己昂首扬帆将来'] 第三次shuffle之后的随机字符串列表: ['愿你开怀永不孤单,让快乐弥漫', '逆境清醒愿你战胜自己昂首扬帆将来', '愿清风为你,吹走那苦闷', '愿星光为你,漆黑里指路'] 第四次shuffle之后的随机字符串列表: ['愿星光为你,漆黑里指路', '愿清风为你,吹走那苦闷', '愿你开怀永不孤单,让快乐弥漫', '逆境清醒愿你战胜自己昂首扬帆将来'] |
代 码 |
import random mlist = [1,2,3,4,5,6,7,8,9] print ("原来列表是: ", mlist ) random.seed(5) random.shuffle(mlist) print("现在列表是:", mlist ) mlist = [1,2,3,4,5,6,7,8,9] random.seed(5) random.shuffle(mlist) print("现在列表是:", mlist) |
运行结果 |
原来列表是: [1, 2, 3, 4, 5, 6, 7, 8, 9] 现在列表是: [3, 4, 2, 1, 9, 8, 7, 6, 5] 现在列表是: [3, 4, 2, 1, 9, 8, 7, 6, 5] |
分析解释: |
使用参数对列表进行无序排列,每次无序排列时都会产生相同的结果 使用随机模块的random.seed()方法,每次随机洗牌都可能产生相同的结果。将种方法与随机播放方法结合使用,即每次调用shuffle方法之前使用相同的seed值时,在执行多次shuffle操作之后,我们都会得到相同的列表。 |
random.shuffle不适用于字符串。它不能接受字符串参数,将出现错误。 TypeError:'str' object does not support item assignment 得到类型错误:“str”对象不支持项分配。 解决办法: 将字符串转换为字符列表。随机地转换字符列表序列,再将无序排列的列表转换为字符串。 |
|
代 码 |
import random str1 = "逆境清醒" print ("原来字符串是: ", str1) mlist = list(str1) random.seed(6) random.shuffle(mlist) str1 = ''.join(mlist) print ("现在字符串是: ", str1) |
运行结果 |
原来字符串是: 逆境清醒 现在字符串是: 醒清境逆 |
代 码 |
import random str1 = "Adversity Awake" print ("原来字符串是: ", str1) mlist = list(str1) random.seed(5) random.shuffle(mlist) str1 = ''.join(mlist) print ("现在字符串是: ", str1) |
运行结果 |
原来字符串是: Adversity Awake 现在字符串是: vekaeditAyAswr |
使用相同的顺序一次洗牌两个Python列表(随机播放两个列表,但保持相同的随机播放顺序)。例如,一个列表包含水果名,另一个列表包含水果颜色,同步随机变化时,两个列表内的水果名和颜色必须对得上。 |
|
代 码 |
import random mlist = ['红苹果', '香蕉', '橘子'] colorlist = ['红色','黄色','橙色'] print("随机变化前") print("水果名: ", mlist) print("水果颜色: ", colorlist) tb_list = list(zip(mlist, colorlist)) random.shuffle(tb_list) mlist, colorlist = zip(*tb_list) print() print("随机变化后") print("水果名: ", mlist) print("水果颜色: ", colorlist) |
运行结果 |
随机变化前 水果名: ['红苹果', '香蕉', '橘子'] 水果颜色: ['红色', '黄色', '橙色'] 随机变化后 水果名: ('橘子', '红苹果', '香蕉') 水果颜色: ('橙色', '红色', '黄色') |
代 码 |
|
运行结果 |
|
方法2:random.sample: |
|
random.sample()方法返回新列表,其中包含传递给它的样本大小。如果我们传递的示例大小与列表的大小相同,它将返回新列表,该列表是原始列表的无序版本 |
|
语 法 |
new_list = random.sample(mlist, len(mlist)) |
参 数 |
|
注 意 |
|
返 回 值 |
返回新列表 |
知识拓展 |
|
实 例 |
|
代 码 |
import random mlist = [1,2,3,4,5,6,7,8,9] print ("原来列表是 : ", mlist) new_list = random.sample(mlist, len(mlist)) print ("现在列表是 : ", new_list) |
运行结果 |
原来列表是 : [1, 2, 3, 4, 5, 6, 7, 8, 9] 现在列表是 : [8, 9, 6, 3, 1, 2, 4, 5, 7] |
代 码 |
import random mlist = ['逆','境','清','醒'] print ("原来列表是 : ", mlist) new_list = random.sample(mlist, len(mlist)) print ("现在列表是 : ", new_list) |
运行结果 |
原来列表是 : ['逆', '境', '清', '醒'] 现在列表是 : ['逆', '醒', '境', '清'] |
代 码 |
import random mlist = ['A', 'd', 'v', 'e', 'r', 's', 'i', 't', 'y', ' ', 'A', 'w', 'a', 'k', 'e'] print ("原来列表是 : ", mlist) new_list = random.sample(mlist, len(mlist)) print ("现在列表是 : ", new_list) |
运行结果 |
原来列表是 : ['A', 'd', 'v', 'e', 'r', 's', 'i', 't', 'y', ' ', 'A', 'w', 'a', 'k', 'e'] 现在列表是 : ['k', 'w', 's', 'a', 'e', 't', 'A', 'v', ' ', 'r', 'd', 'i', 'y', 'A', 'e'] |
代 码 |
|
运行结果 |
|
代 码 |
|
运行结果 |
|
请点击下一章查看后续实例详解 ------》
推荐阅读:
14 | ![]() |
13 | 用代码过中秋,python海龟月饼你要不要尝一口? |
12 | Python List 列表(创建、索引和切片、列表反转、添加删除修改查找元素)__实例详解(全) |
11 | 用代码写出浪漫合集(python 绘制爱心、玫瑰花,字符画爱心、前端特效玫瑰、爱心) |
10 | Python函数方法实例详解全集(更新中...) |
9 | matplotlib 自带绘图样式效果展示速查(全) |
8 | 手机屏幕坏了____怎么把里面的资料导出(18种方法) |
7 | 2022年9月多家权威机构____编程语言排行榜__薪酬状况 |
6 | Python中Print()函数的用法___详解(全,例多) |
5 | 色彩颜色对照表系列(1~5)(16进制、RGB、CMYK、HSV、中英文名) |
4 | Tomcat端口配置(详细) |
3 | Tomcat 启动闪退问题解决集(八大类详细) |
2 | Apache Tomcat 各版本发行时间( v10.1.0-M17~v3.0) |
1 | Tomcat10安装(Windows环境)(详细) |