1 列表的常用方法
- count()
列表.count(元素) — 统计列表中指定的元素的个数,返回一个整数
nums = [1,2,3,4,1,2,3,3]
print(nums.count(3))
- extend()
列表.extend(序列) —— 将序列中的元素全部添加到列表中
nums.extend('abc')
print(nums)
nums.extend([100,'abc','name'])
print(nums)
- index()
列表.index(元素) — 获取指定元素第一次出现的下标
注意:
如果元素不存在会报错。
nums = [100,60,34,100]
print(nums.index(100))
- reverse
列表.reverse() —— 反转列表
只是对原列表进行修改,不会产生新列表
reversed(序列) — 反向序列,不修改原序列,产生新的序列
nums = [1,2,3,4,5,6]
nums.reverse()
print(nums)
nums1 = reversed(nums)
print(nums)
print(list(nums1))
- sort()
列表.sort() —— 将列表中的元素从小到大排序,不产生新列表
列表.sort(reverse = True) — 将列表中的元素从大到小排序
注意:
能够进行排序的列表要求列表中的元素类型一致,并且支持比较运算
sorted(序列) —— 排序时不修改原列表,产生新列表
nums = [100,60,34,101]
nums.sort()
print(nums)
- clear()
列表、clear() —— 删除列表中所有元素(清空列表) - copy()
列表.copy() — 相当于列表[:],将列表中的元素拷贝一份产生一份新的列表(浅拷贝)
2 元组
2.1 概述
元组是python提供的容器小数据类型(序列),不可变,有序;元素就是不可变的列表,一般用于保存一些不让修改的数据。
2.2 元组的元素
- 空元组
空元组无意义,因为元组不可修改 - 元素个数为1
如果元组中只有一个元素,元素之后必须加逗号。
tuple1 = (10)
print(tuple1,type(tuple1)) # int
tuple2 = (10,)
print(tuple2,type(tuple2)) #tuple
元组数据中小括号可以省略。(多个数据直接用逗号隔开,表示是一个元组)。
tuple1 = 10,20,30
a,b,c = 10,20,30 # a,b,c = (10,20,30)
2.3 元素的获取
元组中,元素的获取方法与列表基本相同。
tuple2 = ('周一','周二','周三','周四','周五')
print(tuple2[1])
print(tuple2[2:])
for item in tuple2:
print(item)
让变量的个数和元组中元素的个数保持一致,来一一获取元组中每个元素的值注意变量个数与元组元素的个数相同。
point = (100,50)
x, y = point
print(x,y)
让多个变量同时获取元组中的元素是,可以在一个变量前加将这个变量变成一个列表,来获取不带的变量获取后剩下的数据(注意,带*的变量只有一个)。
student = ('小明',18,89,98,87,98)
name,age,*scores = student # 先取name=小明 和age=18,其余元组组成列表
print(name,age,scores)
name,*scores,age = student # 先取name=小明 和age=98,其余元素组成列表
print(name,age,scores)
3 字典
3.1 概述
字典是python提供的容器型数据类型(序列),可变,无序
语法:
字典名 = {键值对1,键值对2,键值对3,……}
3.2 字典中的元素
字典的元素就是键值对,键值对总是以“键:值”的形式成对出现。
键(key) — 要求不可变且唯一(建议用字符串作为key,用来对值进行说明和区分);
值(value) — 任何类型的数据都可以作为值。
dict1 = {10:100,'name':100,(1,2):100}
print(dict1)
print(len(dict1))
dict1 = {10:100,'name':100,[1,2]:100} # TypeError: unhashable type: 'list'
dict1 = {10:100,'name':100,{1:2}:100} # TypeError: unhashable type: 'dict'
dict1 = {10:100,'name':100,(1,2):100,10:200} # {10: 200, 'name': 100, (1, 2): 100}
print(dict1)
3.3 元素的操作
- 查
- 字典[key]
获取字典中key对应的value。(如果key不存在会报错).
dog = {'name':'旺财','color':'黄色','age':3,'type':'土狗'}
print(dog['name'])
print(dog['gender']) # KeyError: 'gender'
- 字典.get(key)
获取字典中key对应的value(如果key不存在不报错,结果是None)
print(dog.get('name'))
print(dog.get('gender')) # None
- 字典.get(key,默认值)
- 获取字典中key对应的value。(如果key不存在不报错,结果是默认值)。
print(dog.get('gender','公狗'))
- 遍历字典
直接遍历
for key in dog:
print(key,dog[key])
间接遍历
for value in dog.values():
print(value)
for key,value in dog.items():
print(key,value)
浪费硬件资源,执行效率低
- 增/改
字典[key] = value
如果key在字典中不存在,则添加一对key和value如果key在字典中存在,则修改key的value。
#增
class1 = {'name':'py1902','address':'19F05'}
class1['num'] = 50
print(class1) # {'name': 'py1902', 'address': '19F05', 'num': 50}
#改
class1['name'] = 'python1902'
print(class1)
- 删
- del 字典[key]
如果key不存在会报错 - 字典.pop(key)
取出字典中key对应的值。如果key不存在会报错。
del class1['address']
print(class1)
class1.pop('name')
print(class1)
3.4 字典相关操作
- 运算符
不支持数学运算,比较运算符中只支持比较相等,不支持比较大小
print({'a':100,'b':100} == {'b':100,'a':100}) # True
- in和not in
key in 字典 — 判断字典中是否存在指定的key。
class2 = {'name':'py1902','address':'19F05'}
print('name' in class2)
print('py1902' in class2)
- len()
获取字典长度,一个键值对长度为1。
print(len(class2))
- dict
能转换成字典的数据要求数据本身是序列,序列中的每个元素也是长度为2序列
小序列中第一个元素不可变。
data = [(1,2),['a',23]]
print(dict(data))
print(list(class2))
3.5 相关方法
- clear()
字典.clear()— 清空字典 - copy()
字典.copy() — 拷贝字典中的键值对产生一个新的字典 - fromkeys
dict.fromkeys(序列,值) — 创建一个新的字典,字典的key是序列的元素,key对应的values是值只能给不同的key设定相同的valu。
ict1 = dict.fromkeys([1,2,3],1)
print(dict1)
- keys,values,item
字典.keys() —— 获取字典中所有的key,结果是一个序列
字典.values() — 获取字典中所有的value,结果是一个序列
字典.items() — 获取字典中的key和value,以元组的形式返回
print(dict1.keys())
print(dict1.values())
print(dict1.items())
结果:
#dict_keys([1, 2, 3])
#dict_values([1, 1, 1])
#dict_items([(1, 1), (2, 1), (3, 1)])
- setdefault
字典.sedefailt(key,value) — 添加键值对(不能修改) - update
字典1.update(字典2) — 使用字典2中的键值对取更新字典1(不存在添加,存在修改)
dict1 = {'a':1,'b':2,'c':3}
dict2 = {'b':200,'d':300,'e':400}
dict1.update(dict2)
print(dict1)
4 集合
4.1 概述
容器型数据类型(序列),可变、无序。
语法:
集合名 = {元素1,元素2,元素3,……}。
4.2 集合的元素
元素:不可变,唯一(自带去重功能)
set1 = set() # 空集合
set2 = {1,'abc',(1,3),False}
set3 = {1,'abc',(1,3),False}
print(set2)
3.3 元素的相关操作
- 查
集合不能单独获取指定的某一个元素。只支持遍历。
set3 = {12,34,56,2,7,88}
for x in set3:
print(x)
- 增
集合.add(元素) — 网集合中添加一个元素
集合.update(序列) — 将序列中的元素添加到集合中(自带去重功能)
集合.add(元素) — 网集合中添加一个元素
# 集合.update(序列) — 将序列中的元素添加到集合中(自带去重功能)
删
集合.remove(元素) — 删除集合中指定的元素(元素不存在会报错).数学集合运算
set1 = {1,2,3,4,5,6}
set2 = {4,5,6,7,8}
# 1、并集,|,
print(set1 | set2)
# 2、交集,&,求两个集合公共部分
print(set1 & set2)
# 3、差集,-,集合1中除了集合2以外的部分
print(set1 - set2)
# 4)补集,^ — 两个集合除了公共部分以外的部分
print(set1^set2)
# 5 包含关系,
# 集合1 >= 集合2 — 集合1是否包含集合2
# 集合1 <= 集合2 — 集合2是够包含集合1
print({5,6,7,8,9} >= {1,2,3}) # False
print({5,6,7,8,9} >= {5,6}) # True