一、前言
接下来的两篇是讲可变数据类型,本篇先讲list,它是python中最基本的数据类型,它的元素可以任何python数据类型
二、列表
关键字:list,符号[],数据组成:可以包含任意数据类型:int float str list tuple dict 布尔值;不同的元素用逗号隔开
1、创建列表
str1 = "123"
list_1 = [] # 表示空列表
list_2 = list(str1) # 把字符串拆分,一个一个的元素组成列表[]
print(list_2) # 输出:["1","2","3"]
2、取值方式
- 根据索引取值
- 支持切片取值[m:n:k]
3、增删改查
- 增加的多种方式,append追加,在list最后面的追加
list1 = [1,2,3,4]
list1.append("value") # 直接在列表后面追加,
print(list1) # 输出:[1,2,3,4,"value"]
- insert 往指定下标位置插入元素,原来位置的元素往后移
list1 = [1,2,3,4]
list1.insert(2,"element")
print(list1) # 输出:[1,2,"element",3,4]
- extend(),参数是可迭代对象,如:set()、str、tuple、list
list1 = [1,2,3,4]
list1.extend("abc")
print(list1) # 输出:[1,2,3,4,"a","b","c"]
- 删除的几种方法
pop() # 删除list列表最末位的元素
remove(element)# 删除第一次出现的元素
del list[1] # 删除列表1索引位置的元素
clear() # 清空列表
- 赋值运算,即替换:list[index_num]=New_value,index_num位置的值被替换成New_value
4、排序
- 升序; 注意升降序的list元素必须是int类型
list1 = [5,2,3]
list1.sort() # 默认升序;
print(list1) # 输出:[2,3,5]
- 降序,sort,可以由参数决定,默认是False升序
list1 = [5,2,3]
list1.sort(reverse=True)
print(list1) # 输出:[5,3,2]
- 反序
list1 = [1,2,3]
list1.reverse()
print(list1) # 输出:[3,2,1]
5、其他内置函数
- all() # list元素列表只要有一个false则返回false
- any() # list元素列表中只要有一个true则返回true
- len() # 求列表元素的长度
- count() # 计算list元素的个数
- max() # 返回list元素中最大的值
- min() # 返回list元素中最小的值
三、集合
set(),花括号{}表示,为啥要跟list类型一块,因为它可以在list之间相互转换,且对list元素有去重的特性
1、创建set()集合
s = set() # 表示一个空集合
print(s) # 输出:set()。 为啥不是{},因为{}是没值的dict类型
s = set([1,2,3])
print(s) # 输出:{1,2,3}
2、添加元素,如果有重复的元素是覆盖
se = {1,2,3}
se.add(4)
print(se) # 输出:{1,2,3,4}
- 它是不可变数据类型
# add() 只能添加不可变数据类型,可变的就会报错
TypeError: unhashable type: 类型错误,不能hash的类型
3、删除remove元素,指定删除元素
se = {
1,2,3}
se.remove(2)
print(se) # 输出:{1,3}
四、扩展
1、list的比较函数
- cmp在python3中已经没有,如果想比较需要导入operator模块
import operator
list_1 = [1, 4.2, (1, 2), {
1: "s", "abc": 1}, [1, 2, 3], "123"]
list_2 = [1, "a", ('b', 'c')]
print("operator比较两个列表的元素:", operator.__eq__(list_1, list_2))
2、set()快速去重
lis12=[1,3,7,9,1,3]
lis_set=set(lis12)
print("list快速去重,set集合只存在不可变数据类型:{}".format(lis_set))
- 识别可变数据类型
lis14=[(1,),[1,2,3],1,{1,2,3},{"1":'1'},"12",True,1.123]
set(lis14)
执行结果:
1、TypeError: unhashable type: 'list',--去掉list类型
2、TypeError: unhashable type: 'set',--去掉set类型
3、TypeError: unhashable type: 'dict',--去掉dict类型