数据结构和序列
元组
元组是一个固定长度,不可改变的python序列对象,创建元组的简单方式是用逗号分隔一组值。
tup1 = 1,2,3
tup1
tup2 = ((1,2,3),(4,5))
tup2
使用tuple方法可以将任意的序列或者迭代器转化成元组。
tuple([4,0,2]) # 将列表转化成元组
tuple('string') # 将字符串转化成元组
元组本身是不可变的序列对象,但是元组中可以存放一些可变对象,一旦元组生成,元组中的对象就不可修改,但是对元组中的可变对象不受影响,可以在元组内原位置上进行修改。
将用➕可以将元组串联起来
元组乘以一个整数,会将几个元组的复制串联起来,对象本身并没有进行复制,只是引用了它。
tup1 = (1,'string',[2025,10,13],True) # 元组中可以存储的对象类型很多
tup1[3] = False # 试图将元组中的True更改为False,最终会报错
tup1[2].append(99) # 在元组中存储的列表后追加一个数字,可以实现
tup2=('happy','good')
tup1 + tup2
tup2 *3
变量拆分可以用来迭代元组或列表序列
seq = [(1,2,3),(4,5,6),(7,8,9)]
for a,b,c in seq:
print('a={0},b={1},c={2}'.format(a,b,c))
由于元组不可更改,所以元组的方法比较少,最常用的是count(),用来统计元组中某个值出现的次数
tup = (1,2,2,3,1,5,7,2,5)
tup.count(2)
列表
与元组相比,列表的长度可变、内容可以被修改,用方括号[]或者list()函数来定义。
list1 = [1,2,3,5]
str = 'hello world'
list2 = list(str)
列表和元组的语义接近,在许多函数中可以交叉使用。
添加和删除元素
append()可以在列表的末尾添加元素。
insert()在指定位置添加元素,插入的序号必须在0和列表长度之间。
❗️相比于append,insert耗费的计算量更大,因为对后续元素的引用必须在内部迁移。
list = [1,2,3]
list.append(5)
list.insert(3,4) # 第一个变量是要插入元素索引位置,第二个是要插入的对象
pop()会移除并返回指定位置的元素
remove()用来删除指定的元素,他会在列表中从前往后找寻目标元素,删除找到的第一个。
list = ['abandon','good','luck','hello']
list.append('good')
list.pip(0)
list.remove('good')
用in可以检查列表是否包含某个值,输出结果是布尔类型。
串联和组合列表
与元组类似的是可以用➕将两个列表串联起来。如果已经定义了一个列表,可以用extend()方法追加多个元素
[4,None,'foo'] + [3,4,(6,7)]
list = [4,None,'foo']
list.extend([3,4,(6,7)])
print(list)
排序
在python中可以用sort()对列表原地排序,不会创建一个新的列表,sort()方法中还有一些选项很好用,其中之一是二级排序key,例如可以利用key对一个字符串列表按长度来进行排序
list = [9,2,4,1,5,3]
list.sort()
list_str = ['zhao','qian','sun','li','zheng']
list_str.srot(key=len)
切片
用切片可以选取列表中的一部分,具体方法是【start:stop】,这里的start和stop是想要切片的起始和终止索引。切片也可以被赋值,并且会反应到原始列表当中。切片包含起始位置的值但不会包含终止位置的值。起始和终止都可以被省略,在省略情况下,默认为列表起始位置和终止位置。切片时用负数则表示从后往前进行切片。切片其实还有一个参数step设置步长,在stop后用’:‘隔开,一个聪明的方法是将其定为-1,这样可以将列表颠倒过来。
seq = [7,2,3,7,5,6,0,1]
seq[1:5]
seq[3:4] = [6,3]
# 注意这里切片只截取了第三个元素,等同于seq[3],因此此处相当于往列表中额外增加了一个元素
seq
seq[:3] # 省略起始位置,默认从原列表0索引处开始
seq[1:] # 省略终止位置,默认到原列表最后位置
seq[-4:] # 用负数从后面开始切片
seq[-6:-2]
seq[::2] # 设置步长为2,这样就可以隔一个元素取一个元素
seq[::-1] # 设置步长为-1,来颠倒整个列表
字典
字典是python数据结构中重要的数据结构,也叫做哈希映射或关联数组。它是键值对的大小可变集合,键和值都是python对象。创建字典的方式是用尖括号,用冒号来分隔键和值。
可以用访问列表或元组中的元素一样,访问、插入或者设定字典中的元素。
类似列表和元组,可以用in来检验某个键是否在字典中。
用del()和pop()都能实现删除字典中的值,区别在于pop会有一个返回值。
dict = {'name':'zhangsan','age':24,'school':'ZUEL'} # 创建字典
dict['gender'] = 'male' # 增加性别键值对
dict['age'] # 访问年龄的值
'name' in dict # 判断字典中有没有姓名这个键
dict['favorite_food'] = 'noodles' # 添加最喜欢的食物键值对
dict['mentor'] = 'lisi' # 增加导师键值对
dict
del dict['favorite_food'] # 删除最喜欢的食物键值对
dict
gender = dict.pop('gender') # 将性别值返回到gender中并从字典删除性别键值对
dict
集合
集合是无序的不可重复的元素的集合。相当于只有键没有值的字典。
创建集合有两种方式:用set函数或者使用尖括号
集合支持合并、交集、差分和对称差等数学集合运算。
set([1,4,2,2,6])
{22,2,2,1,1,1}

8

被折叠的 条评论
为什么被折叠?



