一、序言
列表、集合、元组均为一系列数据的集合
区别在于新建方式和作用域
列表:var1 = [] 基础类型
集合:var2 = () 不能修改,只可查询
元组:var3 = {} 无序且唯一
二、列表
注意:字符串也算是列表的一种,所以字符串中的方法大多数列表也可以使用
查找方法:
方法 | 作用 |
---|---|
index() | 返回指定数据所在位置的下标 |
count() | 统计指定数据在当前列表中出现的次数 |
len() | 返回列表⻓度,即列表中数据的个数 |
in与not in | 判断某个数据是否在(或者不在)列表当中 |
list1 = [123, "234", 123]
print(list1.index(123)) #输出:0
print(list1.count(123)) #输出:2
print(len(list1)) #输出:3
print(123 in list1) #输出:True
增加数据:
方法 | 作用 |
---|---|
append() | 列表结尾追加数据(可以支持追加列表,但是增加的是列表) |
extend() | 列表结尾追加数据(可以支持追加列表,依次增加) |
insert() | 指定下标插入数据 |
list1 = [123, "234", 123]
list2 = [234]
list1.append(789)
print(list1) #输出:[123, '234', 123, 789]
list1.append(list2)
print(list1) #输出:[123, '234', 123, 789, [234]]
list1 = [123, "234", 123]
list2 = [234]
list1.extend("789")
print(list1) #输出:[123, '234', 123, '7', '8', '9'](字符串也理解为一个列表)
list1.extend(list2)
print(list1) #输出:[123, '234', 123, '7', '8', '9', 234]
list1 = [123, "234", 123]
list2 = [234]
list1.insert(1, "789")
print(list1) #输出:[123, '789', '234', 123]
删除数据
方法 | 作用 |
---|---|
del 列表 | 删除整个列表(此变量就没了) |
pop() | 删除指定下标的数据(默认为最后⼀个) |
remove() | 移除列表中某个数据的第⼀个匹配项 |
clear() | 清空列表 |
name_list = ['张三', '李四', '王五','赵六']
del name_list
print(name_list)
#输出:异常,NameError: name 'name_list' is not defined del后此变量已经没了
name_list = ['张三', '李四', '王五','赵六']
name_list.pop(2)
print(name_list) #输出:['张三', '李四', '赵六']删除倒数第二个
name_list.pop()
print(name_list) #输出:['张三', '李四'] 默认删除最后一个
name_list = ['张三', '李四', '张三','赵六']
name_list.remove('张三')
print(name_list) #输出:删除了第一个“张三”
name_list = ['张三', '李四', '张三','赵六']
name_list.clear()
print(name_list) #输出:[]内容全部清空
print(type(name_list)) #输出:<class 'list'> 清空后类型仍然为列表类型
修改数据
直接通过下标修改:
name_list = ['张三', '李四', '王五','赵六']
name_list[0] = '阿坤'
print(name_list) #输出:['阿坤', '李四', '王五','赵六']仅改变了第一个数据
reverse(): 将列表数据逆置
num_list = [1, 5, 2, 3, 6, 8]
num_list.reverse()
print(num_list)
#输出: [8, 6, 3, 2, 5, 1]
sort(reverse=bool):排序,bool为true则为降序排序,为false则为升序排序
注意,这种排序只用于整形或浮点型,用于字符会报异常
# 列表序列.sort(reverse=False)
li = [2,3,5,6,1,4,8]
li.sort(reverse=False)
print(li)
# [1, 2, 3, 4, 5, 6, 8]
li.sort(reverse=True)
print(li)
# [8, 6, 5, 4, 3, 2, 1]
三、元组
由于元组类型不支持修改,仅可以在初始化时存入数据,且元组的相关方法仅有查找
方法 | 作用 |
---|---|
index() | 返回指定数据所在位置的下标 |
count() | 统计指定数据在当前元组中出现的次数 |
len() | 返回元组⻓度,即元组中数据的个数 |
使用方法与列表一致 |
四、集合
集合的创建可以使用{}和set(),创建空集合仅可以使用set(),{}用于创建空字典;
另外,集合由于是无序的,所以不支持下标
增加数据
方法 | 作用 |
---|---|
add() | 添加一个元素 |
update() | 添加多个数据 |
name_set_one = {"张三", "李四", "王五", "赵六", "李四"}
print(name_set_one)
#输出:{'王五', '赵六', '李四', '张三'}可以发现输出的顺序和初始化时不一致,而且每次程序运行的打印都不一致
name_set_one.add("坤哥")
print(name_set_one)
#输出:{'赵六', '坤哥', '李四', '王五', '张三'} 插入位置也是随机的
name_set_one.update(["sad", "dffg", "weqr"])
print(name_set_one)
#输出:{'sad', 'weqr', '赵六', '坤哥', 'dffg', '李四', '王五', '张三'}
删除数据
方法 | 作用 |
---|---|
remove() | 删除集合中的指定数据,如果数据不存在则抛出异常 |
discard() | 删除集合中的指定数据,如果数据不存在也不会抛出异常 |
pop() | 随机删除一个数据(实际是删除第一个数据,随机删除是通过运行过程中集合的无序完成的) |
s1 = {10, 20}
s1.remove(10)
print(s1) #输出:{20} 删除10
s1.remove(30)
print(s1) #输出:KeyError: 30 因不存在30,抛出异常
s1 = {10, 20}
s1.discard(10)
print(s1) #输出:{20} 删除10
s1.discard(30)
print(s1) #输出:{20} 未抛出异常
s1 = {10, 20, 30, 50, 60}
print(s1) #输出:{50, 20, 10, 60, 30}
s1.pop()
print(s1) #输出:{20, 10, 60, 30}
s1.pop()
print(s1) #输出:{10, 60, 30}
五、字典
字典⾥⾯的数据是以键值对形式出现,字典数据和数据顺序没有关系,即字典不⽀持下标,后期⽆论数据如何变化,只需要按照对应的键的名字查找数据即可。
字典的特点:
1、符号为大括号(与集合一致)
2、数据均以键值对的方式出现
3、各键值对之间用逗号隔开
即 dict1 = {key1:value1, key2:value2}
示例:dict1 = {‘name’: ‘张三’, ‘age’: 20, ‘gender’: ‘男’}
增加数据
字典序列[key] = 值
如key存在,则修改此key对应的值,
如不存在,则新增此key和对应的值
删除数据
del:删除整个字典或者删除指定内容
clear():清空整个字典
dict1 = {'name': '张三', 'age': 20, 'gender': '男'}
del dict1['gender']
print(dict1)
# 输出:{'name': '张三', 'age': 20}
del dict1
print(dict1)
# 输出:NameError: name 'dict1' is not defined 整个字典都被删除了
dict1 = {'name': '张三', 'age': 20, 'gender': '男'}
dict1.clear()
print(dict1) # 输出:{} 即字典对象还在,但是内容空了,和del那种直接删除对象不一样
查找数据
根据键值查找值:
dict1 = {'name': '张三', 'age': 20, 'gender': '男'}
print(dict1['name']) #输出: 张三
print(dict1['id']) #输出: KeyError: 'id' 无此key值
get():查找数据,但如果健不存在,则返回None
dict1 = {'name': '张三', 'age': 20, 'gender': '男'}
print(dict1.get('name')) #输出: 张三 和根据键值是一致的
print(dict1.get('id', 110)) # 输出:110 相当于查找'id'的内容,但不存入dict中
print(dict1) #输出:{'name': '张三', 'age': 20, 'gender': '男'} 可以发现无id
print(dict1.get('id')) # 输出: None 不会抛出异常
keys():查找所有的健
values():查找所有的值
items():查找键和值,返回元组
dict1 = {'name': '张三', 'age': 20, 'gender': '男'}
print(dict1.keys())
#输出 :dict_keys(['name', 'age', 'gender']),其中dict_keys是数据类型,字典键值类型
print(type(dict1.keys()))
#输出 :<class 'dict_keys'>
print(dict1.values())
#输出 :dict_values(['张三', 20, '男']),其中dict_values是数据类型,字典键值类型
print(type(dict1.values()))
#输出 :<class 'dict_values'>
print(dict1.items())
#输出 :dict_items([('name', '张三'), ('age', 20), ('gender', '男')]),其中dict_items是数据类型,字典键值类型
print(type(dict1.items()))
#输出 :<class 'dict_items'>