1 . python随机数的生成
例如1-100间的int
import random
ran=random.randint(1,100)
2.序列是一种数据存储方式,用来存储一系列的数据。在内存中,序列就是一块用来存放多个值的连续的内存空间。
序列包括五种数据类型:字符串,列表,元组,(有序序列)字典,集合(无序序列)
序列包括四种组合数据类型:
列表,元组,(有序序列)字典,集合(无序序列)
①切片操作
步长可以为负数,s[::-1]可以对s进行逆序输出,=s[-1:-N:-1]
②序列可以相加相乘例如字符串相加连接,*n可以重复n次,此外
列表list----可变数据类型——操作后元素数量可以改变但是元素的存储位置不变
列表(List)是一种动态数组数据结构,在Python等语言中,它不是基于哈希表实现的。列表之所以不需要哈希是因为其元素的存储和访问方式:
顺序存储:列表内的元素按照插入的顺序线性排列,通过索引(从0开始)直接访问,这与哈希表的随机查找(通过键计算哈希值确定位置)不同。
无固定大小:列表可以动态地改变大小,即在需要时添加或删除元素,而无需预设容量。哈希表通常有固定的容量,当元素超过一定数量时,需要调整底层哈希表的结构。
遍历操作:对于列表,常见的遍历操作如就是基于顺序的,而哈希表更常用于快速查找和插入操作,适合一次性找到特定键对应的值。for i in list:
虽然列表不依赖哈希提供高效的查找速度,但在某些场景下,如果需要快速查找元素,尤其是对大量数据进行频繁查找的情况下,哈希表会更有优势。例如,字典(Dictionary)在Python中就是一个基于哈希实现的数据结构。
1.列表的创建
- enumerate() 是python的内置函数,将一个可遍历iterable数据对象(如list列表、tuple元组或str字符串)组合为一个索引序列,同时列出数据和数据下标(自定义,默认为0),一般用在for循环当中。
语法: enumerate(sequence, [start=0])
lis=['world',123,11,'hello']
print(lis)
lis2=list('hello')
lis3=list(range(1,10,2))
print(lis2,lis3)
for index,item in enumerate(lis3,start=1):
print(index,item)
3.列表的操作–增删改查
remove(item)方法和pop(index)方法的区别:
remove(item)方法是直接对可变序中的元素进行检索删除,直接删除列标中的第一个item,不返回删除值(返回None)
pop(index)方法是对可变序列中元素下标进行检索删除,返回删除值
4.列表的排序
sort排序是在原列表位置进行,不会更改和复制新的,sorted需要新对象
lis3.sort()
print(lis3)
new_list3=sorted(lis3,reverse=True)
print(new_list3)
#[1, 3, 5, 7, 9]
#[9, 7, 5, 3, 1]
- 列表生成式
lis4=[i for i in range(1,10) if i%2==0]
print(lis4) #[2, 4, 6, 8]
6.多维数组
lis5=[
['world',123,11,'hello'],
['world',123,11,'hello'],
['world',123,11,'hello'],
]
print(lis5)
lis6=[[for j in range(5)] for i in range(4) if i%2==0] #五列四行
for row in lis5:
for item in row:
print(item,end='\t')
print()
元组tuple----不可变数据类型——没有增删改查等操作,只能获取和遍历
- 如果元组中只有一个元素,用t=tuple(1)创建后,这个1十一个int类型而不是元组类型,需要加一个,例如t=tuple(1,)
同样可以用enumerate()来枚举获得index和item
t=('niu',12,34)
print(t[0])
t2=t[0:2] #可以切片
print(t2)
for i in t:
print(i)
结果:
niu
(‘niu’, 12)
niu
12
34
- 元组生成式
t = (i for i in range(100))
生成的t是一个生成器对象<generator object <genexpr> at 0x00000285C4196D40>
,遍历过一遍后对象就不存在元素了,它不是一个元组类型
生成器对象是一种延迟计算的序列,它会在需要时逐个产生值。这与列表、元组等容器对象不同,后者会在创建时就将所有的元素都存储在内存中。
生成器对象的优点在于它可以大大减少内存的使用。当处理大量数据时,使用生成器对象可以避免一次性读取所有数据到内存中,而是逐个读取并处理每个元素,从而节省内存空间。