Python学习之随机数、元组、命名元组

本文介绍了Python中的随机数生成,包括random模块的randint、choice、randrange、shuffle和sample等函数的用法。接着详细讲解了元组的基本概念,如元组的不可变性、定义、访问方式以及count、index和len等方法的使用。此外,还提及了元组在数据操作中的限制,强调其只读特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.随机数

random模块

randint(a,b)返回[a, b]之间的整数

import random
random.randint(1,2) #[1,2]
1
random.randrange(1,2) #[1,2)
1

choice(seq)从非空序列的元素中随机挑选一个元素,比如random.choice(range(10)),从0到9中随机挑选一个整数

lst = list(range(0,10))
lst
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
for i in range(10):
    print(random.choice(lst))
5
1
3
9
1
4
5
4
5
5

还可以使用index

for i in range(10):
    index = random.randint(0,9)
    print(lst[index])
7
0
5
8
5
8
5
1
7
6

randrange([start], stop, [step])从指定范围内,按指定基数递增的集合中获取一个随机数,基数缺省值为1

random.shuffle(list)->就地打乱列表元素

random.shuffle(lst)
lst
[9, 3, 7, 1, 6, 4, 8, 0, 5, 2]

sample(population, k)从样本空间或总体(序列或集合类型)中随机取出k个不同元素,返回一个新的列表
random.sample(['a', 'b', 'c','d'],2) ['a', 'd']
random.sample(['a', 'a'],2)

lst
[8, 4, 3, 0, 1, 5, 9, 2, 6, 7]
random.sample(lst,1)
[3]
random.sample(lst,2)
[7, 0]
random.sample(lst,11)
ValueError                                Traceback (most recent call last)
C:\Users\XIANNI~1\AppData\Local\Temp/ipykernel_11976/1749354534.py in <module>
----> 1 random.sample(lst,11)

E:\zuoting\tools\WorkTools\python\lib\random.py in sample(self, population, k, counts)
    447         randbelow = self._randbelow
    448         if not 0 <= k <= n:
--> 449             raise ValueError("Sample larger than population or is negative")
    450         result = [None] * k
    451         setsize = 21        # size of a small set minus size of an empty list

ValueError: Sample larger than population or is negative

2. 元组tuple

一个有序的元素组成的集合
使用小括号()表示
元组是不可变的

2.1 元组定义

t1 = ()  #定义一个空元祖
t1
()
t2 = tuple() #定义一个空元祖
t2
()
t3 = (1) *3  #不是元组,1使用括号改变优先级
t3
3
t4 = (1,)  #一个元素必须加逗号
t4
(1,)
t5 =(1,2) #定义一个元祖
t5
(1, 2)
t6 =(1,[2,3],'a',None)
t6
(1, [2, 3], 'a', None)
t7 = tuple(lst) #将列表变成元组
t7
(8, 4, 3, 0, 1, 5, 9, 2, 6, 7)
t8 = tuple(range(10))
t8
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

元组一旦创建,都不能改,哪怕是一个空元组,可变和不可变指的是元组本身
在这里插入图片描述

t6 =(1,[2,3],'a',None)
t6
(1, [2, 3], 'a', None)
t6[1][0] = 20 #引用内存地址不可变,改的是引用内存地址里面的元素
t6 #对于元组本身来说,并没有变过,因为放的内存地址并未改变过
(1, [20, 3], 'a', None)

2.2 元组访问
支持索引(下标)
正索引:从左至右,从0开始,为列表中每一个元素编号
负索引:从右至左,从-1开始
正负索引不可超界,否则引发异常IndexError
元组通过索引访问
tuple[index],index就是索引,使用中括号访问

t9 =(1,)*5
t9
(1, 1, 1, 1, 1)
t10 = ([1],) *5
t10[2][-1] =100
t10
([100], [100], [100], [100], [100])

2.3 元组查询
index(value, [start, [stop]])
通过值value,从指定区间查找列表内的元素是否匹配
匹配第一个就立即返回索引
匹配不到,抛出异常
count(value)
返回列表中匹配value的次数
时间复杂度
index和count方法都是O(n)
随着列表数据规模的增大,而效率下降
len(tuple)
返回元素个数

元组是只读的,所以增、改、删方法都没有

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咸宁七s

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值