1、元组类型的概念和总结
1.1、元组类型的概念
1、用途:按照位置存放多个值,索引对应值
2、定义方式:在()内用逗号分隔开多个任意类型的元素
t = (11, 11.11, 'aaa', [222, 333])
print(t[-1][0])
l[0] = 1111
l[-1][1] = 1111
print(l, type(l))
3、数据类型转换
print(tuple('hello'))
t = (111,)
print(type(t))
1.2、元组类型的总结
存多个值
有序
不可变
2、元组的内置方法
2.1、元组优先掌握的操作
1、按索引取值(正向取+反向取):只能取
t = (11, 11.11, 'aaa', [222, 333])
print(t[-1])
print(t[-1][0])
2、切片(顾头不顾尾,步长)
t = (11, 11.11, 'aaa', [222, 333])
print(t[:2])
print(t[:])
print(t[::-1])
3、长度 len()
t = (11, 11.11, 'aaa', [222, 333])
print(len(t))
4、成员运算 in和 not in
t = (11, 11.11, 'aaa', [222, 333])
print(11 in t)
print(222 in t)
5、循环
t = (11, 11.11, 'aaa', [222, 333])
for item in t:
print(item)
2.2、元组需要掌握的操作
1、t.index
t = (11, 11.11, 'aaa', [222, 333])
print(t.index('aaa'))
print(t.index(222))
2、t.count
t=(11, 222, '333', 222, [222,333])
print(t.count(222))
print(t.count(333))
3、字典类型的概念和总结
3.1、字典类型的概念
1、用途:按照key:value的形式存放多个值,key对应值
2、定义方式:在{}内用逗号分隔开多个key:value的元素,其中value可以是任意数据类型,而key必须是不可变类型,通常是字符串类型,且key不能重复
d = {1:1111, (1,2,3):2222}
print(d[(1,2,3)])
d[1] = 3333
d['k1'] = 4444
print(d)
针对存在的key则改值,不存在的key则加值
d={"k1":111,"k2":222,"k3":333,"k1":444,"k1":5555}
print(d)
3、数据类型转换,快速初始化一个字典
res = dict([("k1", 1111), ("k2", 2222), ("k3", 3333)])
print(res)
res = dict(x=111, y=222, z=333)
print(res)
res = {}.fromkeys(["name", "age", "gender"], None)
print(res)
3.2、字典类型的总结
存多个值
无序
可变
4、字典的内置方法
4.1、字典优先掌握的操作
1、按key存取值:可存可取
d={"k1":111,"k2":222,"k3":333}
print(d['k2'])
d['k1'] = 100
d['k4'] = 444
print(d)
针对存在的key则改值,不存在的key则加值
d={"k1":111,"k2":222,"k3":333,"k1":444,"k1":5555}
print(d)
2、长度len
d={"k1":111,"k2":222,"k3":333}
print(len(d))
3、成员运算 in和 not in,针对key来判断的
d={"k1":111,"k2":222,"k3":333}
print("k1" in d)
4、删除
d={"k1":111,"k2":222,"k3":333}
方式一:
del d["k1"]
print(d)
方式二:
res=d.pop("k2")
print(res)
print(d)
5、键keys(),值values(),键值对items()
d={"k1":111,"k2":222,"k3":333}
print(d.keys())
print(d.values())
print(d.items())
6、get
d={"k1":111,"k2":222,"k3":333}
print(d.get('k3'))
print(d.get('k4'))
7、循环
d={"k1":111,"k2":222,"k3":333}
for k in d.keys():
print(k)
for k in d:
print(k, d[k])
for v in d.values():
print(v)
for k, v in d.items():
print(k, v)
4.2、字典需要掌握的操作
1、d.copy
d1={"k1":111,"k2":222,"k3":333}
d2=d1.copy()
print(d2)
2、d.update
d={"k1":111,"k2":222,"k3":333}
d.update({"k3":444,"k5":5555})
print(d)
3、d.popitem
d={"k1":111,"k2":222,"k3":333}
res = d.popitem()
print(d)
4、d.setdefault
d={"k1":111,"k2":222,"k3":333}
if "k1" not in d:
d["k1"] = 66666666666666
res = d.setdefault("k1", 666666666666)
print(d)
print(res)
5、d.clear
d={"k1":111,"k2":222,"k3":333}
d.clear()
print(d)
5、集合类型的概念和总结
5.1、集合类型的概念
1、用途:
(1)去重(局限性太大,建议手写代码去重)
(2)关系运算
2、定义方式:在{}内用逗号分隔开多个不可变类型
集合特点:
1、元素必须是不可变类型
2、集合内元素无序
3、集合内元素唯一
s = {111,111,111,111,111,"aaa",3.3,(111,222)}
print(s)
3、数据类型转换
基于集合的特点,只能转换符合特点的数据成集合
res1 = set('hello')
print(res1)
res2 = set([111,222,333,111,[1,2,3]])
print(res2)
4、集合的去重(只针对符合集合特点的数据类型可以去重,且无序)
nums = [111, "aaa", 111, 111, 222, 3333, 444]
s = set(nums)
nums = list(s)
print(nums)
5、手写代码去重:
l1 = [
{'name': 'egon', 'age': 18, 'sex': 'male'},
{'name': 'alex', 'age': 73, 'sex': 'male'},
{'name': 'tom', 'age': 20, 'sex': 'female'},
{'name': 'egon', 'age': 18, 'sex': 'male'},
{'name': 'egon', 'age': 18, 'sex': 'male'},
]
res = []
for item in l1:
if item not in res:
res.append(item)
print(res)
5.2、集合类型的总结
存多个值
无序
可变
6、集合的内置方法
6.1、集合优先掌握的操作
1、长度 len()
s={11,222,333}
print(len(s))
2、成员运算 in和 not in
s={11,222,333}
print(11 in s)
3、关系运算:交集& 并集| 差集- 对称差集^ 等集== 父集>= 子集<=
pythons = ['alex','egon','yuanhao','wupeiqi','gangdan','biubiu']
linuxs = ['wupeiqi','oldboy','gangdan']
3.1) 交集 &:共同部分
print(pythons & linuxs)
或者
print(pythons.intersection(linuxs))
3.2) 并集 |:合并去重
print(pythons | linuxs)
或者
print(pythons.union(linuxs))
3.3) 差集 -:-前的集合不同于 -后的集合的部分
print(pythons - linuxs)
或者
print(pythons.difference(linuxs))
---------------------------------------------------------------------
print(linuxs - pythons)
或者
print(linuxs.difference(pythons))
3.4) 对称差集 ^:两个集合不同的部分,也就是两个集合相互差集的并集
print(pythons ^ linuxs)
或者
print(pythons.symmetric_difference(linuxs))
3.5) 等集 ==:判断两个集合是否完全相等
s1 = {1, 2, 3}
s2 = {3, 2, 1}
print(s1 == s2)
或者
print(s1.issubset(s2) and s1.issuperset(s2))
3.6) 父集 >=:判断 >=前面的集合是否是 >=后面的集合的父集合,也就是完全包含关系
s1 = {1, 2, 3, 4, 5}
s2 = {3, 2, 1}
print(s1 >= s2)
或者
print(s1.issuperset(s2))
3.7) 子集 <=:判断 <=前面的集合是否是 <=后面的集合的子集合,也就是完全被包含关系
s1 = {1, 2, 3, 4, 5}
s2 = {3, 2, 1}
print(s2 <= s1)
或者
print(s2.issubset(s1))
6.2、集合需要掌握的操作
1、s.update,用另一个集合去更新目标集合,已存在的元素则去重,不存在的元素则添加
s = {"aaa", 22, 3, "bbb"}
s.update({3, 4, 5})
print(s)
2、s.pop,随机删除一个元素,返回被删除的元素值
s = {"aaa", 22, 3, "bbb"}
res = s.pop()
print(s)
print(res)
3、s.remove,删除指定元素,如果元素存在则删除并返回None;若元素不存在则报错
s = {"aaa", 22, 3, "bbb"}
res=s.remove("bbb")
print(s)
print(res)
4、s.discard,和remove差不多,删除指定元素,存在则删除并返回None,不存在不会报错也返回None,
s = {"aaa", 22, 3, "bbb"}
res = s.discard("cccccccccc")
print(s)
print(res)
5、s.add,添加元素,如果元素已存在则不添加,不存在则添加
s = {"aaa", 22, 3, "bbb"}
s.add("ccc")
print(s)
6、s.isdisjoint,判断两个集合内有没有相同的元素,有则为False,没有则为True
s1 = {1, 2, 3}
s2 = {4, 5, 6, 3}
print(s1.isdisjoint(s2))