python数据类型【列表(list)】
列表(list),是一个 有序且可变的容器,在里面可以存放多个不同类型的元素。
1.定义
data_list=[]
data_list=[1,2,3,4]
2.独有方法
字符串和列表的比较:
-
字符串,不可变,即:创建好之后内部无法修改【都是创建一份数据】
name='wxy' name.upper() #name值不变,name.upper()又创建一份数据
-
列表,可变,即:创建好之后内部元素可以修改,【独有功能基本上都是直接操作列表内部,不会创建新的一份数据】
num_list=[1,2] num_list.append(3) num_list [1,2,3]
2.列表方法
- 追加,在原列表中追加值 append()
data_list=[1,2]
data_list.append(3)
data_list [1,2,3]
- 批量追加,将一个列表中的元素逐一添加另外一个列表 extend()
data1_list=[1,2]
data2_list=[3,4]
data1_list.extend(data2_list)
data_list [1,2,3,4 ]
-
插入,在原列表的指定索引位置插入值 insert(索引,值)
data_list=[1,2] data_list.insert(1,3) data_list [1,3,2]
-
在原列表中根据值删除(从左到右找到第一个删除) remove()【慎用:里面没有删除的值会报错】
data_list=[1,2,3] data_list.remove(2) data_list [1,3]
-
在原列表中根据索引踢出某个元素(根据索引位置删除) pop(索引)
data_list=[1,2,3] data_list.pop() 默认最后一个 data_list [1,2] data_list.pop(1) data_list [1,3]
-
清空原列表 clear()
data_list=[1,2,3] data_list.clear() data_list []
-
根据值获取索引(从左到右找到第一个元素) index(值) 【慎用:找不到报错】
data_list=[1,2,3] index=data_list.index(3) index 2 data_list [1,2,3]
-
列表元素排序 sort() 从小到大 sort(reverse=True)从大到小
data_list=[102,24,0,4,6,1,2,3] data_list.sort() data_list [0, 1, 2, 3, 4, 6, 24, 102] data_list.sort(reverse=True) data_list [102, 24, 6, 4, 3, 2, 1, 0]
注意:排序时内部元素无法进行比较时,程序会报错(尽量数据类型统一)
data_list=['hello',24,0,'nihao'] data_list.sort() 报错:TypeError: '<' not supported between instances of 'int' and 'str'
-
反转原列表 reverse()
data_list=[102,24,0,4,6,1,2,3]
data_list.reverse()
data_list [3, 2, 1, 6, 4, 0, 24, 102]
3. 公共方法
-
相加,两个列表相加获取生成一个新的列表
v1=[1,2] v2=[3,4] v3=v1+v2 [1,2,3,4]
-
相乘,列表*整型 将列表中的元素再创建N份并生成一个新的列表
v1=[1,2]*2 v1 [1,2,1,2]
-
运算符 in 包含
由于列表内部是由多个元素组成,可以通过in 来判断元素是否在列表中
#列表 v1=[1,2,3,4] if 2 in v1: print('yes') #字符串 v2='1234' if 2 in v2: print('yes')
注意:列表检查元素是否存在时,是采用逐一比较的方式,效率会比较低
-
获取长度
data_list=[1,2,3] len(data_list) 3
-
索引,一个元素的操作
#读 data_list=[1,2,3,4,5] data_list[2] 3 #改 data_list=[1,2,3,4,5] data_list[2]=100 data_list [1,2,100,4,5] #删1 根据索引 data_list=[1,2,3,4,5] del data_list[0] data_list=[2,3,4,5] #删2 根据值 data_list=[1,2,3,4,5] data_list.remove(1) data_list=[2,3,4,5]
注意:超出索引范围会报错
提示:由于字符串是不可变类型,所以他只有索引读的功能, 列表是可变类型 可以读,改,删
-
切片,多个元素的操作(很少用)
#读 data_list=[1,2,3,4,5] data_list[0:3] [1,2,3]
#改 data_list=[1,2,3,4,5] 不用和修改的个数一样,自动全部放入,向前插入 data_list[0:2]=[100,200,300,400] data_list [100,200,300,400,3,4,5] data_list=[1,2,3,4,5] #从索引2开始放 data_list[2:]=[100,200,300,400] data_list [1,2,100,200,300,400] data_list=[1,2,3,4,5] #放在最后 data_list[100:]=[100,200,300,400] data_list [1,2,3,4,5,100,200,300,400] data_list=[1,2,3,4,5] #放在最前 data_list[:0]=[100,200,300,400] data_list [100, 200, 300, 400, 1, 2, 3, 4, 5]
#删1 data_list=[1,2,3,4,5] del data_list[0:3] data_list [4,5]
-
步长
data_list=[1,2,3,4,5] data_list[1:4:2] [2,4] data_list[::2] [1,3,5] data_list[4:1:-1] [5,4,3]
问题:给一个字符串实现字符串的翻转? 注意:字符串没有reverse()功能
可以使用[ : :-1]进行翻转
-
for 循环
data_list=[1,2,3,4,5] for i in data_list: print(i)
4 转换
-
int,bool无法转换成列表
-
str
name='wxy' list(name) ['w','x','y']
-
超前
#元祖转列表 v1=(1,2,3,4) v2=list(v1) [1,2,3,4] #集合转列表 v3={1,2,3,4} v4=list(v3) [1,2,3,4]
5.嵌套
列表属于容器,内部可以存放各种数据,所以他也支持列表的嵌套
data=['wxy',[1,2],True]