序列是python中最基本的数据结构
数据结构是指计算机中数据存储的方式
序列用于保存一组有序的数据,所有数据在序列中位置唯一(索引)
#序列分类
可变序列:列表list #序列中元素可变
不可变序列:字符串str ,元租tuple
#创建列表,通过[]来创建列表
my_list = [] #创建一个空列表
#列表中存储的数据,称为元素
#一个列表中可以有多个元素,元素位置默认是按照顺序插入,也可以指定元素位置,可以通过索引指定位置,索引从0开始
#my_list = [10] #创建一个有元素的列表
#my_list = [10,23,34,33,t,[a,b,c],ceshi] #列表中可以保存任意的对象
#获取列表长度 ,列表中个数
len()#获取列表长度,列表长度是索引+1
#切片
切片指从现在列表中获取一个子列表
#创建一个列表,一般创建列表时,变量的名字会使用复数
stus = [1,2,3,4,5]
语法:列表[起始位置:结束位置:步长]
#通过切片获取元素位置,会包括起始位置,不包括结束位置
#做切片操作时,总会返回一个新列表,不会影响原来的列表
#起始结束位置的索引可以忽略不写
#如果省略结束位置,则会一直截取到最后
#如果省略起始位置,则会从第一个元素开始截取
#如果起止都省略,相当于创建一个列表副本
#步长默认为1
#+和*
+号可以将两个列表拼接
*号可以将列表复制或者重复
#in和not in
检查指定元素是否存在列表中
如果存在返回ture 不存在返回false
#min和max
#两个方法:方法和函数基本一直,方法必须通过对象.方法()的形式调用
index(查找元素,起始位置,结束位置)
count()
如果元素不存在方法会报错
#创建一个课表
my_list = [’张三‘,’李四‘,’王五‘,’狗蛋‘,’小胖‘]
#通过索引进行修改
my_list[0] = '帅哥'
#通过切片进行修改
my_list[0:2] = 'swk'#再给 切片进赋值时必须传递序列,#相当于替换原有切片中序列
my_list[0:0] ='帅哥' #向索引中0的位置插入元素
#当设置步长时, 序列中元素个数必须和切片中元素一致
#通过进行删除
del my_list[::2]
以上方法是用于可变序列
不可变序列可以使用list()函数转为list
#创建一个课表
my_list = [’张三‘,’李四‘,’王五‘,’狗蛋‘,’小胖‘]
append()#向列表最后位置添加元素
列表对象.append(元素)
insert(插入位置,插入元素)#向列表插入元素
extend(序列列表)#使用新序列扩展当前序列,使用一个序列作为参数,讲该序列元素添加到当前列表(相当列表拼接)
clear()清空序列
del()删除方法
pop()#根据索引删除并返回指定元素
remove()#根据元素值删除
reverse()#反转列表
sort()#排序
#遍历列表,指的就是讲列表中所有元素取出来
#使用while循环遍历
i = 0
while i < len(列表) :
i+= 1
#使用for循环遍历
语法
for 变量 in 序列 :
代码块
- range(起始位置,结束位置,步长)函数
用来生成自然数序列 - 元祖(tuple)
#元祖是一个不可变序列
#操作和列表基本一直
#所以操作元组时可以按照不可变列表操作
#创建元组
my_tuple = ()#创建一个空元组
如果元组不为空,括号可以省略
my_tuple = 1,2,3
#元组解包
a,b,c = my_tuple
a,b,*c = my_tuple#在对一元组进行解包时,变量数量必须和元素一直,也可以在变量前添加* ,变量将剩余元素存入列表,不能出现两个以上的*号出现在解包中
每个对象中都保存了是三个数据:
ID(标识)
type(类型)
value(值)
可以变对象时改变对象的值
a[0]=10(改对象)
#这个操作时通过变量去修改对象的值
#这个操作不会改变变量所指向对象
#内存地址不会改变
a=[1,3,34,4(改变量)内存地址会改变
==和!=是比较对象的值是否相等
比较是对象时否相等
字典属于新的数据结构:称为映射
#字典作用和列表类似,都是用来缓存储对象的容器
列表存储数据性能好,但是查询数据性能差
#字典中每一个元素都是唯一的名字,通过名字可以快速查找元素
#创建字典
语法 d ={1,2,3}
{key:value,key:value}
#字典的值可以是任意对象
#字典的键可以是任意不可对象(int,str,bool,tuple)
字典的键是不能重复,如果重复出现后边会替换前边
#需要根据键获取值
d['name']
#每个字典中都可以有多个键值对,而每一个键值对我们称其为一项(item)
#使用dict函数创建字典
d = dict(name='王五',age=12,gender='男')
#将双值序列转换字典
序列中只有两个序列:[1,2] (2,3),'ab'
子序列,如果列表中的元素也是序列,那么我们就称为元素子序列
[(1,2),(3,4),(5,6)]
# in 和 not in 检查是否包含指定键
#获取字典中的值,根据键来获取值
语法d[key]
#如果key不存在会报错
#get[key,[,default]]
get(key)方法
语法
字典[key]=值
方法
setdefault(‘name’,【,default】)可以用来向字典添加key-value,如果key不存在则添加key,则添加值
#update (字典)方法
#将其他的字典key-value 添加到当前字典中
#del()
#pop()
#popitem 删除子字典中最后一个键值对
#clear()
#copy()字典进行浅拷贝
浅复制会简单复制对象内部值,如果值也是一个可变的对象,这个可变对象不会被复制
遍历字典
#keys()该方法会返回字典的所有key,返回一个序列,序列中保存所有的key
#通过遍历key来回获取所有的键
for k in keys():
print(k)
#values()方法
返回字典中所有的值
for v in values():
print(v)
#item ()
该方法会返回字典中所有的项
返回一个双值子序列,解包以后获取键值对
for k,v in 字典.items():
print(k,v)
创建集合
#使用{}创建集合
#集合是无序保存
#集合中元素不可以重复
#集合中存不可变对象
#创建空集合
使用set()函数创建集合
#使用set() 转换字典时,只会包含键,不包含值
#集合不能使用索引操作集合
#集合使用in 和not in检查集合中元素
#add()方法添加元素
#update() 将一个集合中的元素添加到当前集合中
#remove() 删除集合中指定元素
#clear()清空集合
#copy()浅复制
&交集运算
#使用交集运算时不会影响原有集合
| 并集运算
-差集运算
^ 异或集运算
<=集合
检查一个集合是否是另一个集合的子集