列表、字典、元祖、集合
列表
队列:先进先出
>>> l =[] >>> print(l) [] >>> l.append('first') >>> l.append('second') >>> l.append('third') >>> print(l.pop(0)) first >>> print(l.pop(0)) second >>> print(l.pop(0)) third
堆栈:先进后出
>>> l =[] >>> l.append('first') >>> l.append('second') >>> l.append('third') >>> print(l.pop()) third >>> print(l.pop()) second >>> print(l.pop()) first
count
-
统计元素出现的次数
>>> l = [1,2,3,4,5,6,] >>> res = l.count(8) >>> print(res) 0
clear
-
清空列表
>>> l = [1,2,3,4,5,6,] >>> l.clear() >>> print(l) []
reverse
-
将列表反转
>>> l = [1,2,3,] >>> l.reverse() >>> print(l) [3, 2, 1]
sort
-
排序,默认是从小到大
-
但是可以通过指定参数来修改默认的排序规则
>>> l.sort() >>> print(l) [1, 2, 3] >>> l = [1,3,2,6,] >>> l.sort(reverse=True) >>> print(l) [6, 3, 2, 1]
元组
作用:小括号内存储多个元素,元素之间逗号隔开,
元素可以是任意类型,元组不能被修改
取值
-
方式:按索引取值(正向或反向);只能取值,无法更改
>>> '不能更改' '不能更改' >>> t = (1,2,'a',[5,6]) >>> print(t[3]) [5, 6] >>> print(t[0:3]) (1, 2, 'a') >>> print(t[-1]) [5, 6] >>> t[0]= '2' Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'tuple' object does not support item assignment
循环取值
>>> t = ('i can fly.',56,7.8,{9,10}) >>> for j in t: ... print(j,end=' ') ... i can fly. 56 7.8 {9, 10} >>> >>>
删除:不支持删除元素
>>> t = (1,2,'a',[5,6]) >>> del(t[0]) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'tuple' object doesn't support item deletion
切片
>>> t = (1,2,'m',(1,2)) >>> print(t[::2]) (1, 'm') >>>
长度len()
>>> t = ([5,6],'k',7) >>> print(len(t)) 3 >>>
成员运算
>>> t = ('i am fine.',{5,6},{'name':'zhang','ped':'456'}) >>> print({5,6} in t) True
不支持添加元素
>>> t.append(11) Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'tuple' object has no attribute 'append' >>>
字典
作用:大括号内存储多组key:value键值对,key通常情况下都是字符串,其实只要是不可变类型即可,value可以是任意数据类型
注意:字典的key不能重复,若重复,则按照最后写入的一组为准,其他的键值对失效 不写入字典
三种定义方式
-
key:value键值对
>>> d = {'age':18,'hobbies':'music,play'} >>> print(d['age']) 18
-
dict方式赋值
>>> d = dict(age=24,weight=123) >>> print(type(d),d) <class 'dict'> {'age': 24, 'weight': 123} >>>
-
直接改变列表数据类型
-
这种方法要求源列表的格式
-
-
字典的使用
-
取值
-
按key取值,通过索引直接 可存可取可改
>>> d = {'age':18,'hobbies':'music,play'} >>> print(d['age']) 18 >>> d['name':'zhang'] Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unhashable type: 'slice' >>> d['name']='zhang' >>> print(d) {'age': 18, 'hobbies': 'music,play', 'name': 'zhang'} >>> d['name']='wang' >>> print(d) {'age': 18, 'hobbies': 'music,play', 'name': 'wang'}
-
按keys(),values(),items()取值
>>> d1 = {'name':'jason','password':123} >>> print(d1.keys(),d1.values(),d1.items()) dict_keys(['name', 'password']) dict_values(['jason', 123]) dict_items([('name', 'jason'), ('password', 123)]) >>> d1 = {'name':'jason','password':123} >>> print(d1.keys()) dict_keys(['name', 'password']) >>> print(d1.values()) dict_values(['jason', 123]) >>> print(d1.items()) dict_items([('name', 'jason'), ('password', 123)]) >>>
-
循环取值
>>> d1 = {'age':24,'gender':'male'} >>> for k in d1: ... print(k) ... age gender >>>
-
get()
-
作用:根据key获取value;dict.get('key','参数')
-
注意
-
① 若存在就取出对应value,不管有没有写第二个参数
-
② 不存在返回第二个参数
-
③ 如没有写第二个参数则返回None
>>> d1 = {'age':24,'weight':123} >>> print(d1.get('age','若存在就取出对应value')) 24 >>> print(d1.get('name','不存在返回None')) 不存在返回None >>> print(d1.get('name')) None >>> print(d1.get('name','不存在返回第二个参数,如没有第二个参数则返回None')) 不存在返回第二个参数,如没有第二个参数则返回None >>> print(d1.get('age','若存在就取出对应value')) 24
-
-
-
setdefault();格式:dict.setdefault('key','value')
-
当键存在的情况下 不修改值 并且将原先key对应值返回给你
-
当键不存在的情况下 新增一个键值对 并且将新增的键值对的值返回给你
>>> d1 = {'age':24,'gender':'male'} >>> d1.setdefault('age') 24 >>> d1.setdefault('age',18) 24 >>> d1.setdefault('name','zhang') 'zhang' >>>
-
-
-
存值
-
update() 格式:dict1.update(dict2)
-
把一个字典重中的键值对取出,或者一个新的键值对关系,依次添加到另一个字典中
>>> d1 = {'age':24,'gender':'male'} >>> d2 = {'name':'zhang'} >>> d1.update(d2) >>> print(d1) {'age': 24, 'gender': 'male', 'name': 'zhang'} >>> print(d2) {'name': 'zhang'} >>> d1.update('age'=18) File "<stdin>", line 1 SyntaxError: keyword can't be an expression >>> d1.update(age=18) >>> print(d1) {'age': 18, 'gender': 'male', 'name': 'zhang'} >>> d1.update(age=18,gender=female) Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'female' is not defined >>> d1.update(age=18,gender='female')
-
-
dict.setdefault(‘name’,'jason'):当键不存在的情况下 新增一个键值对 并且将新增的键值对的值返回给你
>>> d1 = {'age':24,'gender':'male'} >>> d1.setdefault('age') 24 >>> d1.setdefault('age',18) 24 >>> d1.setdefault('name','zhang') 'zhang'
-
d1['name','jason']:不存在的话就会新增
>>> d1['age']=100 >>> print(d1) {'age': 100, 'gender': 'female', 'name': 'zhang'} >>>
-
-
删除
-
del() 格式:del dict['key']
>>> del d['hobbies'] >>> d = {'age':18,'hobbies':'music,play'} >>> del d['hobbies'] >>> print(d) {'age': 18}
-
clear()清空字典 格式:dict.clear()
>>> d = {'age':18,'hobbies':'music,play'} >>> d.clear() >>> print(d) {}
-
pop()按索引弹出
>>> d = {'age':18,'hobbies':'music,play'} >>> d.pop('age') 18 >>> print(d) {'hobbies': 'music,play'} >>>
-
popitem()
-
最后一组键值对以元组的形式弹出键值对
>>> d1 = {'age':24,'gender':'male'} >>> res = d1.popitem() >>> print(res) ('gender', 'male') >>>
-
-
-
长度len():统计键值对的个数
>>> d = {'age':18,'hobbies':'music,play'} >>> print(len(d)) 2
-
成员运算 in:字典只能判断key值,value是不对用户显示的
>>> d = {'age':18,'hobbies':'music,play'} >>> print(18 in d) False
集合
作用:去重,关系运算
定义:花括号中逗号隔开,每个元素必须是不可变类型,否则报错
特点:可变,无序,自动去重
运算:(| 合集)(&交集)(-差集)(^对称差集)(==元素相同)(>,>=父集)(<,<=子集)
pythons = {'jason', 'nick', 'tank', 'egon', 'kevin', 'owen', 'alex'} linux = {'frank', 'jerry', 'tank', 'egon', 'alex'} # 既报名python也报名linux的学生姓名 print(pythons & linux) # 交集 # 只报名python的学生姓名 print(pythons - linux) # 只报名linux的学生姓名 print(linux - pythons) # 没有同时报名两门课程的学生姓名 print(pythons ^ linux) # 对称差集 # 取出所有报了名的学生姓名 print(pythons | linux)
添加元素:set.add(元素)
>>> s = {1,2,3,4} >>> s.add(666) >>> print(s) {1, 2, 3, 4, 666} >>> print(s.add((11,22,33))) None >>> print(s) {1, 2, 3, 4, (11, 22, 33), 666} >>>
删除元素
>>> s = {1,2,2,3,4,} >>> s.remove(1) >>> s {2, 3, 4}