一文打尽,列表数据随机排列,总有一个方法惊艳你

     如何随机排列列表是一项非常有用的技能。在需要获得随机结果时特别有用。本文将盘点random模块的使用方法,总一个惊艳你。

1..shuffle 和 .sample 有什么区别?

    Python 有一个非常有用的库来生成随机数,称为 random 我们将使用random.shuffle() 和 random.sample() 函数来随机排列列表元素。在我们研究如何使用它们之前,让我们快速了解它们之间的差异。

random.shuffle() 和 random.sample() 这两个函数都返回一个随机排序的列表,但它们返回它们的方式是不同的:

random.shuffle():随机排列原始列表。# 将原来的列表打乱,没有产生新列表

random.sample():返回基于原始列表的新随机列表。# 返回新列表

random.sample()也可用于随机排列字符串和元组,它会创建一个新列表。

2.使用 random.shuffle() 随机排列列表元素

shuffle() 函数直接将序列的所有元素随机排序,没有返回值。

「shuffle() 语法格式:」

import random

random.shuffle(lst)

import random
list1
 = [1, 2, 3, 4, 5, 6]
random.shuffle(list1)
print(list1)

3.使用 random.sample() 随机排列列表元素

sample() 返回一个从序列即列表、元组、字符串或集合中选择的特定长度的项目列表。用于无替换的随机抽样。

「sample() 语法格式:」

import random

random.sample(sequence, k)

「参数:」

sequence: 可以是一个列表,元组,字符串,或集合。

k: 一个整数值,它指定一个样本的长度。

返回:从序列中选择k长度的元素的新列表。如果是1,就是返回1个。

import random
list1
 = [1, 2, 3, 4, 5, 6]
list2
 = random.sample(list1, len(list1))
print(list2)

4.使用 random.seed() 固定随机排列结果

seed() 方法改变随机数生成器的种子,可以在调用其他随机模块函数之前调用此函数。

调用 random.random() 生成随机数时,每一次生成的数都是随机的。但是,当我们预先使用 random.seed(x) 设定好种子之后,其中的 x 可以是任意数字,如1,这个时候,先调用它的情况下,使用 random() 生成的随机数将会是同一个。

import random
list1
 = [1, 2, 3, 4, 5, 6]
random.seed(1)

for i in range(5):
    random.shuffle(list1)
    print(list1)
#输出:
[3, 4, 6, 1, 5, 2]
[3,
 4, 6, 5, 2, 1]
[6,
 1, 2, 5, 3, 4]
[4,
 1, 2, 6, 3, 5]
[5,
 6, 3, 4, 1, 2]

5.随机排列列表的子列表

在 Python 中,你经常会遇到多维列表,我们可以使用 for 循环访问列表列表中的每子列表,使用 shuffle() 函数来随机排列每个子列表的元素。

import random
list1
 = [[1, 2], [3, 4], [5, 6]]
for i in list1:
    random.shuffle(i)
print(list1)

6.以相同的随机顺序排列多个列表

假设有两个列表:一个包含水果,另一个包含该水果的数量。对列表进行随机排列,但希望,两者一一对应。为了实现这一点,我们使用 zip() 函数将两个列表合并,然后随机排列列表。

import random
list1
 = ['apples', 'grapes', 'oranges', 'bananas']
list2
 = [50, 40, 60, 70]

# zip(x,y)将两个列表组合为元组
list3
 = list(zip(list1, list2))
random.shuffle(list3)


list1 = [item[0] for item in list3]
list2
 = [item[1] for item in list3]


print(list1)
print(list2)


  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值