WordPress课程广告

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

释放双眼,带上耳机,听听看~!

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列表相关文章

Python enumerate() 函数,Python将列表转换为索引:元素的字典

Python获取两个列表的交集

给TA打赏
共{{data.count}}人
人已打赏
Python字典Python笔记

Python 字典判断键是否存在

2022-7-6 23:39:51

Python内置函数Python列表Python字典Python笔记

Python3 sorted() 函数 - 对所有可迭代的对象进行排序操作

2022-7-22 23:52:12

WordPress网站建设宣传图片
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索
展开目录