Python数据容器
元组
eg:
tuple_01 = ("hello", 1, 2,-20,[11,22,33])
print(type(tuple_01))
结果:
<class 'tuple'>
元组的定义
元组的嵌套
元组的强制转换
eg:
tuple_01[1] = "l love you"
结果:
Traceback (most recent call last):
File "D:\pycharm\main.py", line 5, in <module>
tuple_01[1] = "l love you"
TypeError: 'tuple' object does not support item assignment
因为元组的元素一旦定义,不可更改
eg:
tuple_01 = ("hello", 1, 2,20,[11,22,33])
print(tuple_01)
tuple_01[-1][0] = "l love you"
print(tuple_01)
结果:
('hello', 1, 2, 20, [11, 22, 33])
('hello', 1, 2, 20, ['l love you', 22, 33])
元组切片
eg:
tuple_01 = ("hello", 1, 2,-20,[11,22,33])
print(tuple_01[1:4])
结果:
(1, 2, 20)
元组、列表、字符串公用的方法
eg:
tuple_01 = ("hello", 1, 2,20,[11,22,33])
len(tuple_01)
print(len(tuple_01))
结果:
5
元组的注意事项:
eg:
t = (1, 2, 3)
print(type(t))
t1 = 1, 2, 3
print(type(t1))
结果:
<class 'tuple'>
<class 'tuple'>
eg:
t1 = (2)
print(type(t1))
t2 = (2, )
print(type(t2))
结果:
<class 'int'>
<class 'tuple'>
eg:
>>> t=(22,)
>>> t*10
(22, 22, 22, 22, 22, 22, 22, 22, 22, 22)
>>>
元组的方法:
index
eg:
>>> t=(75,23,22,12,1)
>>> t
(75, 23, 22, 12, 1)
>>> t.index(22)
2 #索引下标为2时为22
>>> t.index(222) #没有时报错
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: tuple.index(x): x not in tuple
>>>
count
eg:
>>> t1=(1,2,3,4,2,2,2,3)
>>> t1
(1, 2, 3, 4, 2, 2, 2, 3)
>>> t1.count(2)
4
>>>
集合
set_01={'gouxin','zhangsan','gouxin','zhangsan','gouxin','zhangsan'}
print(set_01)
eg:
set_01 = set("12345") #名称尽量不要起set,这是关键字,set()函数,
print(set_01) #大部分解释器会报错
set_02 = set("123451111111122223333444")
print(set_02)
set_03 = set([1,2,3,4]) #可能解释器会爆红,这是不推荐,但可以
print(set_03)
set_04 = set([1,2,3,4,1,1,1,1,2,2,2])
print(set_04)
set_05 = set((10,20,30,1,1,1))
print(set_05)
d = {
"姓名":"zs",
"年龄":18
} #简单的字典形式,后面会详细讲
set_06 = set(d) #转换为集合
print(set_06)
结果:
{'2', '3', '4', '1', '5'} #无序的,你第二遍运行可能就会不同
{'2', '3', '4', '1', '5'} #去除重复的元素
{1, 2, 3, 4} #按大小顺序给我们显示出来
{1, 2, 3, 4} #也会给我们去重
{1, 10, 20, 30} #按大小顺序给我们显示出来,同时去重
{'年龄', '姓名'} #会把字典里的键名放在集合里
集合的方法
集合.add(元素) | 将指定的元素添加到集合内 |
1集合.update(2集合) | 将两集合合并,合并到1集合里(2集合不变) |
集合.remove(元素) | 将指定的元素,从集合中移除 |
集合.pop() | 随机取出一个元素 |
集合.discard(元素) | 删除指定元素,不存在不做任何操作 |
集合一.intersection(集合二) | 集合一与集合二的交集,原集合不变 |
集合一.union(集合二) | 两个集合进行合并 ,原集合不变 |
集合一.difference(集合二) | 差集,取出集合一有而集合二没有的,原集合不改变 |
集合一.difference_update(集合二) | 消除差集:在集合一内,删除和集合二相同的元素 集合一改变,集合二不变 |
集合.clear() | 清空集合 |
len(集合) | 统计集合中元素的数量 |
集合.copy() | 拷贝集合 |
for in | 集合的遍历 |
add
eg:
set_01 = {1,2,3,"l love"}
print(set_01)
set_01.add("you")
print(set_01)
结果:
{1, 2, 3, 'l love'}
{'you', 1, 2, 3, 'l love'} #因为集合本身是无序的
update
eg:
print(set_01)
set_02 =(4,5,6)
print(set_02)
set_01.update(set_02)
print(set_01)
print(set_02)
结果:
{1, 2, 3, 'l love', 'you'}
(4, 5, 6)
{1, 2, 3, 'l love', 4, 5, 6, 'you'} #集合的排列是随机排列的
(4, 5, 6)
remove
eg:
print(set_01)
set_01.remove(4)
print(set_01)
set_01.remove(4)
结果:
{1, 2, 3, 4, 5, 6, 'you', 'l love'}
{1, 2, 3, 5, 6, 'you', 'l love'}
Traceback (most recent call last): #4不存在,报错
File "D:\pycharm\main.py", line 39, in <module>
set_01.remove(4)
KeyError: 4
pop
eg:
print(set_01)
set_01.pop()
print(set_01)
结果:
{1, 2, 3, 4, 5, 6, 'l love', 'you'}
{2, 3, 4, 5, 6, 'l love', 'you'}
discard
eg:
print(set_01)
set_01.discard("you")
print(set_01)
set_01.discard("you") #不存在,也不会报错
print(set_01)
结果:
{1, 2, 3, 4, 5, 6, 'you', 'l love'}
{1, 2, 3, 4, 5, 6, 'l love'}
{1, 2, 3, 4, 5, 6, 'l love'} #不存在,则不做任何操作
交集和并集
eg:
set_01 = {1,2,3,5,6,"l love"}
set_02 = {4,5,6,"l love","you"}
print(set_01 & set_02) #求相交的(共有的)
print(set_01 | set_02) #求合并的(两集合合并,并且去重)
print(set_01)
print(set_02)
结果:
{'l love', 5, 6}
{1, 2, 3, 'you', 5, 6, 4, 'l love'}
{1, 2, 3, 5, 6, 'l love'} #不会改变集合本身
{'you', 4, 5, 6, 'l love'}
intersection
eg:
print(set_01)
print(set_02)
set_01.intersection(set_02) #与&的效果相同
print(set_01.intersection(set_02))
print(set_01) #不会改变集合本身
print(set_02)
结果:
{1, 2, 3, 5, 6, 'l love'}
{4, 5, 6, 'l love', 'you'}
{'l love', 5, 6}
{1, 2, 3, 5, 6, 'l love'}
{4, 5, 6, 'l love', 'you'}
union
eg:
print(set_01)
print(set_02)
set_01.union(set_02)
print(set_01.union(set_02))
print(set_01) #不会改变集合本身
print(set_02)
结果:
{1, 2, 3, 5, 6, 'l love'}
{4, 5, 'l love', 6, 'you'}
{1, 2, 3, 4, 5, 6, 'l love', 'you'} #与 | 的效果相同,会去重
{1, 2, 3, 5, 6, 'l love'}
{4, 5, 'l love', 6, 'you'}
difference
eg:
print(set_01)
print(set_02)
set_01.difference(set_02)
print(set_01.difference(set_02))
print(set_01)
print(set_02)
结果:
{1, 2, 3, 'l love', 5, 6}
{'l love', 4, 5, 6, 'you'}
{1, 2, 3} #取出合一有而集合二没有的,原集合不改变
{1, 2, 3, 'l love', 5, 6}
{'l love', 4, 5, 6, 'you'}
difference_update
eg:
print(set_01)
print(set_02)
set_01.difference_update(set_02)
print(set_01.difference_update(set_02))
print(set_01)
print(set_02)
结果:
{1, 2, 3, 5, 6, 'l love'}
{4, 5, 6, 'l love', 'you'}
None #因为已经进行过一次了,使集合一已经发生改变,无操作返回None
{1, 2, 3} #集合一改变
{4, 5, 6, 'l love', 'you'} #集合二不变
clear
eg:
print(set_01)
print(set_02)
set_01.clear()
print(set_01)
print(set_01.clear())
print(set_01)
print(set_02)
结果:
{1, 2, 3, 5, 6, 'l love'}
{'you', 4, 5, 6, 'l love'}
set() #清空集合后返回一个set()函数,表示空集合
None #空集合无可清空,即返回None
set() #返回一个set()函数,表示空集合
{'you', 4, 5, 6, 'l love'}
len
eg:
print(set_01)
len(set_01) #统计集合中元素的个数,不会直接打印
print(len(set_01))
print(set_01)
结果:
{1, 2, 3, 'l love', 5, 6}
6
{1, 2, 3, 'l love', 5, 6} #不改变集合本身
copy
eg:
print(set_01)
set_01.copy() #拷贝集合的内容,不打印
print(set_01.copy())
print(type(set_01.copy()))
print(set_01)
结果:
{1, 2, 3, 'l love', 5, 6}
{1, 2, 3, 'l love', 5, 6}
<class 'set'> #类型还是集合
{1, 2, 3, 'l love', 5, 6} #不改变集合本身
>>>import os
>>>os.system("cls")
字典
字典的定义:
eg:
my_dict={
key:value, #键值对
key:value,
key:value
}
创建空字典
eg:
dict_00 = {} #注意:这是字典不是集合
print(type(dict_01))
print(dict_00)
dict_01 = {
"uname":"zhangsan", #键是字符串(最常见)
"age":18,
1:18, #键是数字
(1,2,3):18 #键是元组
}
print(type(dict_01))
print(dict_01)
dict_02 = dict()
print(type(dict_02))
print(dict_02)
dict_03 = dict((["uname","zhangsan"],["age",18])) #赋值方式
print(type(dict_03))
print(dict_03)
结果:
<class 'dict'>
{}
<class 'dict'> #类型字典
{'uname': 'zhangsan', 'age': 18, 1: 18, (1, 2, 3): 18} #字典的内容
<class 'dict'>
{} #空字典
<class 'dict'>
{'uname': 'zhangsan', 'age': 18}
字典的方法
字典[key]=value | 新增元素 |
del 字典[key] | 删除元素 |
字典[key]=value | 更新元素 |
字典[key] | 查询元素(值) |
字典.get(key) | 查询元素(值) |
字典.pop(key) | 删除元素 |
字典.clear() | 清空元素 |
字典.keys() | 获取全部key |
1、for key in keys: 2、for key in 字典 | 遍历字典 |
len() | 统计字典的元素数量 |
增
eg:
dict_01 = {
"姓名":"张三",
"年龄":18
}
print(dict_01)
dict_01["技能"] = "python"
print(dict_01)
结果:
{'姓名': '张三', '年龄': 18}
{'姓名': '张三', '年龄': 18, '技能': 'python'}
删(del关键字)
eg:
print(dict_01)
del dict_01["姓名"]
print(dict_01)
结果:
{'姓名': '张三', '年龄': 18, '技能': 'python'}
{'年龄': 18, '技能': 'python'}
改(重新赋值)
eg:
print(dict_01)
dict_01["技能"] = "安全渗透"
print(dict_01)
结果:
{'年龄': 18, '技能': 'python'}
{'年龄': 18, '技能': '安全渗透'}
查
eg:
print(dict_01)
print(dict_01["技能"])
结果:
{'年龄': 18, '技能': '安全渗透'}
安全渗透
查(get函数)
eg:
print(dict_01)
print(dict_01.get("技能"))
print(dict_01.get("姓名"))
print(dict_01.get("姓名","l love you")) #修改默认值
结果:
{'年龄': 18, '技能': '安全渗透'}
安全渗透
None #若获取的东西没有时,返回None(表示无)
l love you #将默认值修改
字典的嵌套
eg:
my_dict={
"王力宏":{
"语文":77,
"数学":66,
"英语":33
},
"周杰伦":{
"语文":88,
"数学":86,
"英语":55
},
"林俊杰":{
"语文":99,
"数学":96,
"英语":66
}
}
print(my_dict["王力宏"]["语文"])
结果:
77