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)
返回元素个数
元组是只读的,所以增、改、删方法都没有