容器:用于存放多个元素的数据结构
1.创建:[]、list(其他容器)、[已有列表]* n
2.访问/修改
3.常用方法:
增加:append、insert、extend
删除:pop、remove、clear
sort、reverse、copy、index、count
一:列表list
Python中的列表类似C中的数组
优点:
1.列表中的元素可以是任意数据类型
2.列表中的长度可动态的添加或缩短
缺点:
1.内存开支上略逊于数组
2.频繁添加新元素会影响程序内存使用率
三种增加新元素的方式
1.append添加的元素会追加在当前数组的尾部
ls = [1,2,3,4]
ls.append(123)
print(ls)
[1, 2, 3, 4, 123]
2.insert插入元素,输入插入的位置和插入的数据(数据可以是任意类型)
ls = [1,2,3,4]
ls.insert(0,"哈哈")#在0位置插入“哈哈”
print(ls)
['哈哈', 1, 2, 3, 4]
3.合并extend
ls= [1,2,3,4]
ls1=["a","b","c","d"]
ls.extend(ls1)
print(ls)
[1, 2, 3, 4, 'a', 'b', 'c', 'd']
语法糖
ls = [1,2,3,4]
ls1 =["ss"]
ls = ls + ls1
print(ls)
[1, 2, 3, 4, 'ss']
两种删除方法
1.remove直接对可变序中的元素进行检索删除
ls = [1,2,3,4,"ss"]
ls.remove("ss")
ls.remove(1)
print(ls)
[2, 3, 4]
2.pop是对可变序列中元素下标进行检索删除
ls = [1,2,3,4,"ss"]#[0,1,2,3,4]按照这样的数列排序
ls.pop(0)
print(ls)
[2, 3, 4, 'ss']
清空命令
ls = [1,2,3,4,"ss"]
ls.clear()
print(ls)
[]
访问元素
#当访问列表最后一个元素时,当列表长度为n时,最后的元素为n-1
ls = [1,2,3,4,4,5]
print(ls[len(ls)-1])#len(ls)用于测量容器的长度,len(ls)-1测出最后一个元素
5
修改元素
ls = [1,2,3,4,4,5]
ls[0]="ABC"#将0号元素“1”,修改为“ABC”
ls[1]="ABC"#将1号元素“2”,修改为“ABC”
print(ls)
['ABC', 'ABC', 3, 4, 4, 5]
排序
sort升序排列整型
ls= [1,22,3,4]
ls.sort()
print(ls)
[1, 3, 4, 22]
ls= [1,22,3,4,aa]
ls.sort()
print(ls)
ls= [1,22,3,4,aa] #排序命令只能排同一个数据类型;aa
^^
reverse降序排列整型
ls= [1,22,3,4]
ls.sort(reverse=True)
print(ls)
[22, 4, 3, 1]
查看序列在列表中的位置
ls = [1,2,3,4,5]
print(ls.index(1))#输入不是列表中的数会报错
0
二:元组
元组是一种不支持元素修改的特殊列表
tp=("www.qq.com","111.222.333")#元组tp使用()创建,列表ls使用[]创建
print(tp)
('www.qq.com', '111.222.333')
#可以访问元素
tp = (2,3,4,5,)
print(tp)
print(tp[0],tp[1])#访问第0元素,第1元素
(2, 3, 4, 5)
2 3
三:切片
start
是切片的起始位置,表示要从序列的哪个索引开始切片。默认值为0。stop
是切片的结束位置,表示切片结束的索引,但不包括该位置的元素。默认值为序列的长度。step
是切片的步长,表示每隔多少个元素进行切片。默认值为1。
切片默认从左往右切;当步长为负数的时候,则从大往小切
默认从左往右【起点:终点:步长】
tp=0,1,2,3,4,5
tp1=tp[1:3:1]#起点1,终点3(取不到3),步长1
print(tp1)
tp2=tp[0:4:2]
print(tp2)
tp3=tp[::1]#
print(tp3)
(1, 2)
(0, 2)
(0, 1, 2, 3, 4, 5)
在一个序列中(lsit,str,tuple)使用一些特殊方法提取一个子数列
a = [0,1,2,3,4,5,6,7,8,9]
#-10-9-8-7-6-5-4-3-2-1
步长为负数时,前大于后才会切出
a[1:6:-1]
[]
a[6:1:-1]
[6, 5, 4, 3, 2]
步长为正数时,后大于前才会切出
当前面为负数的时候且没有步长切不出
a[0:8]
[0, 1, 2, 3, 4, 5, 6, 7]
a[-1:8]
[]
四:字典
set是一种特殊的dict,它是一种只有键没有字典。不可以重复出现的元素
st = {1, 2, 3, 4, 5}
# set是一种特殊dict,它是一种只有键没有值的字典,不可以重复命名
dc = {"姓名": "张三", "年龄": 18, "身高": 170, "体重": 60, }
print(dc["姓名"])
张三
st = {1, 2, 3, 4, 5}
dc = {"姓名": "张三", "年龄": 18, "身高": 170, "体重": 60, }
print(dc.get(18))#如果键不存在会返回空值
None
st = {1, 2, 3, 4, 5}
dc = {"姓名": "张三", "年龄": 18, "身高": 170, "体重": 60, }
print(dc["姓名"])#如果键不存在会报错
张三
更改命令
st = {1, 2, 3, 4, 5}
dc = {"姓名": "张三", "年龄": 18, "身高": 170, "体重": 60, }
dc["姓名"]="坤坤"
print(dc)
{'姓名': '坤坤', '年龄': 18, '身高': 170, '体重': 60}
生成表格
dc = {"姓名": "张三", "年龄": 18, "身高": 170, "体重": 60, }
for (k,v) in dc.items():#items生成表格,以(k,v)的方式生成
print(k,v)
姓名 张三
年龄 18
身高 170
体重 60
集合st
st和字典dict都是哈希结构数据 ,不支持序号访问
st={1,2,3,4}#集合st创建使用{}
print(st)
print(st[0])
{1,2,3,4}
print(st[0])
~~^^^
TypeError: 'set' object is not subscriptable
集合的作用
1.取并集
ls1 = [1,2,3,4]
ls2 = [3,4,5,6]
st1=set(ls1)
st2=set(ls2)
st3=st1.union(st2)#union为和集
print(st3)
{1, 2, 3, 4, 5, 6}
2.取差集
ls1 = [1,2,3,4]
ls2 = [3,4,5,6]
st1=set(ls1)
st2=set(ls2)
st3=st1.difference(st2)#differenc不同的
print(st3)
{1, 2}
3.取交集
ls1 = [1,2,3,4]
ls2 = [3,4,5,6]
st1=set(ls1)
st2=set(ls2)
st3=st1.intersection(st2)#intersection相同的
print(st3)
{3, 4}