容器
list 任何人都有权限对其进行增删改查
list相当于C中的数组,
list.append() #每次增加一个,如果有多个元素,则会在原列表中增加一个列表,增加的列表中包含的是所增加的元素
list.extend() #可每次增加多个元素
如 利用append和input输入2,3,4 list.append(input().split()) 则 list=[['2','3','4']]
但如果是用extend输入的话就不同了
list.extend(input().split()) 则 list=['2','3','4']
列表的遍历:
1: 直接遍历元素 list=[4,5,6,7]
for i in list:
print(i)
结果如下
4
5
6
7
2. 利用range(len(list)) 通过索引间接遍历
for i in range(len(list)):
print(i,list[i])
结果如下
0 4
1 5
2 6
3 7
tuple (元组,只读列表,(),元素由 ,隔开 可以存储任意数据 )存储重要数据,只能被查询,而不能对其增删改。
1. 索引与切片 : 和字符串处理相同
2.for循环: for i in tuple i 对应每个元组中的元素
3.元组的嵌套
tul=(1,2,“li”,"日天",[“昊”,“王”],“python”)
注意 :如果元组中含有列表,字典,列表,字典中的元素是可以修改的,比如可以在tul这个元组中的列表增加一个“SB”,tul[4].append("SB") ,只要不删除这个列表,可以对列表中的数据进行任意改动。元组并不常用,只是某些特定的需求会用到。且,元组中尽量不要放置其他容器类型。(儿子是你的儿子,但孙子不一定是你的孙子)
4.支持tuple.conut() tuple.index() len(tuple)等函数
dict 字典
list,tuple 查询速度慢,数据关联性较差
数据类型的划分(可变与不可变):
可变数据类型(不可哈希): list dict set
不可变数据类型(可哈希的数据类型):str int bool tuple
字典是以{}括起来,键值对的形式存储的 {“name”:“li”} name是键 li是值 它们两个是一对键值对 字典可以包含任意个键值对
字典的键:只能是不可变的数据类型,大部分不是字符串就是数字,且字典的键不可重复***
字典的值:可以是任意数据,包括对象,内存地址等等
字典可以存储大量的 并且关系型数据比如存储个人信息,字典中可以存字典
字典的查询速度非常快,遵循哈希算法***
字典的使用:
1. 增删改查
dic={“name”:“li”,“age”:18,“sex”:“man”}
增:
(1).直接增加
dic["high"]=183
如果增加的键值对中的键与原字典中重复,则改变原字典中的值(有此键则修改,无则增加)
(2)。函数 dic.setdefault("string") (有此键则不变,无此键则增加)dic.setdefault("weight") 如果只给一个参数,则只增加一个无对于值的键
删:
(1).用pop()函数,按照 键 删除
ret = dic.pop(“name”) 将 name 键值对删除 并将 字典中剩下的键值对返回给ret
如果字典中没有你要用pop所删除的键,但是你删除了,会报错,但是如果给pop设置了第二个参数,就会返回第二个参数,并不会报错
ret = dic.pop.("weighe",“0”) 则 ret = 0
(2)clear()
清空字典
(3)del dic["string"]
用法 del + 空格 加字典名 + 键名 注意:是空格 不是点
如果没有该键 ,则报错 ,且每次只能删除一个。
改
(1.) 直接改 : 按照键值改 dic["name"] = "ding" 则 dic={“name”=" ding" .....} 和增中(1) 相同
(2.)up.date()
dic 2={"name":"ding","weight":60}
调用 dic.update(dic2)
则 dic={“name”:”ding“,“age”:18,“sex”:“man”,“weight”:60}
dic2={“name”:“ding”,“weight”:60}
update函数将dic2中的键值对,增添到dic中,如果有相同键名的,则更改dic中的键对应的值。 比如dic["name"]对应的值由 “li” 变为了“ding”,且dic中增加了“weight”:60 (相同的覆盖,不同的添加)
up.date()的括号中的参数不仅可以是字典 ,也可以是变量,比如 dic.update(name="ding",weight=60) 此操作造成的结果和dic.update(dic2) 完全相同
,且 up.date()可以一次性增添任意个键值对。
查
(1.)ret=dic["string(键名)"] ret=dic.get("string")
dic.get( )可设置返回值 如果没有所要查找的键,默认返回 None ,但可以设置返回值,和pop()相似。
ret=dic["name1"] , "name1" 并不在dic中,所以会报错。
如果是用 ret=dic.get("name1") 则编译器默认返回 None 并不会报错
2.字典的嵌套
dic={“dic1”:{“name”:“li”,“age”:18}
1:["li","ding",3]
}
将dic1中增加“weight”:60
方法一 :直接赋值罚 :首先通过键名,找到该字典 然后赋值 dic[dic1][weight]=60
方法二:间接赋值法:可以另外创建一个字典,来作为中间变量
比如:
dic3=dic[dic1]
dic3[weight]=60 此操作结果和直接法相同。
对字典嵌套的操作还是和基本的字典操作相同,关键就是找到相应的键。
python中的分别赋值
a,b,c = 1, 2, "li" ——> a=1 b=2 c="li"
a,b = (1,2) ——> a=1 b=2
a,b = [1,2] ——> a=1 b=2
上述三种赋值方式相同
交互赋值
a=1 b=2 交换a ,b的位置
a , b = b , a 则结果为 a=2 b=1