python 从列表中随机获取元素方法

微信扫一扫,分享到朋友圈

python 从列表中随机获取元素方法
0

python 从列表中随机获取元素方法:可以使用python中random模块的sample, choice, choices,randint方法来进行。下面我们一起来看下四种从列表中随机获取元素方法:

sample

random.sample(sequence, k)

sample的作用是从指定序列中随机获取指定长度的片断并随机排列,结果以列表的形式返回。

注意:sample函数不会修改原有序列(下述的其余方法也不会),sample是不会重复取值的。

参数sequence表示一个有序类型。这里要说明 一下:sequence在python不是一种特定的类型,而是泛指一系列的类型。list, tuple, 字符串都属于sequence(字典和集合都是无序的)

参数

sequence:有序类型

k:取值个数

返回值

传入有序类型的随机项,值为列表类型

实例

# -*- coding: utf-8 -*-
from random import sample

test_list = [1, 2, 3, 4, 5]
result = sample(test_list, k=3)
print('result:', result)
# sample函数不会修改原有序列
print('test_list:', test_list)

执行结果:

result: [5, 4, 1]
test_list: [1, 2, 3, 4, 5]

choice

random.choice(sequence)

choice和sample一样,是返回传入有序类型的随机项,但是choice返回的值有可能是重复的。

参数

sequence:有序类型

返回值

传入有序类型的随机项

实例

# -*- coding: utf-8 -*-
from random import choice

test_list = [1, 2, 3, 4, 5]
for num in range(3):
    print('num:', choice(test_list))

执行结果:

num: 2
num: 5
num: 5

choice创建随机密码组合案例:

import string #string module里包含了阿拉伯数字,ascii码,特殊符号
import random #需要利用到choice

a = int(input('请输入要求的密码长度'))
b = string.digits + string.ascii_letters + string.punctuation #构建密码池
password = "" #命名一个字符串

for i in range(0,a):  #for loop 指定重复次数
    password = password + random.choice(b)   #从密码池中随机挑选内容构建密码
print(password)   #输出密码

choices

random.choices(sequence, weights=None, cum_weights=None, k=1)

choices也是返回传入有序类型的随机项,choices和sample一样可以设置返回值的个数,choices返回值也有可能是重复的。

参数

sequence:必须。列表,元组,数字范围等序列。

weights:可选。列表是可以权衡每个值的可能性。默认:None

cum_weights:可选。列表是可以权衡每个值的可能性,只有这一次累积的可能性。
示例:正常权重列表:[2,1,1]与此cum_weights列表相同; [2,3,4]。默认:None

k:可选。一个定义返回列表长度的整数

返回值

传入有序类型的随机项,值为列表类型

实例

# -*- coding: utf-8 -*-
from random import choices

test_list = [1, 2, 3, 4, 5]
for num in range(3):
    print('num:', choices(test_list))
# choices可以设置返回值个数
result = choices(test_list, k=3)
print('result:', result)

执行结果:

num: [5]
num: [4]
num: [4]
result: [3, 5, 3]

randint

random.randint(a, b)

randint可以随机生成一个在a-b范围内的随机整数(包括a和b(Return random integer in range [a, b], including both end points.)。

我们可以通过将a设置为:0,b的值设置为len(list) – 1,生成一个不超过列表长度的随机数,通过下标的方式来随机获取一个列表中的值。也可以配合list中的pop、del对列表进行修改,下面是实例代码:

实例

# -*- coding: utf-8 -*-
from random import randint

test_list = [1, 2, 3, 4, 5]
index = randint(0, len(test_list) - 1)
result = test_list[index]
print('result:', result)

for _ in range(5):
    index = randint(0, len(test_list) - 1)
    result = test_list[index]
    print(_, result)

# 如果想将取出的值从列表中去除,可以配合list.pop()
print(test_list)
index = randint(0, len(test_list) - 1)
result = test_list.pop(index)
print(test_list)

执行结果:

result: 4
0 2
1 2
2 1
3 3
4 1

微信扫一扫,分享到朋友圈

python 从列表中随机获取元素方法
0
上一篇

Python 字典判断键是否存在

下一篇

CSS:margin: auto和margin: 0 auto的区别

你也可能喜欢

发表评论

您的电子邮件地址不会被公开。 必填项已用 * 标注

提示:点击验证后方可评论!

插入图片
微信 微信
微信
返回顶部