Python基础四 数据类型(list,tuple)
一.列表(list)
列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如:
li= [‘alex’,123,Ture,(1,2,3,’wusir’),[1,2,3,’小明’,],{‘name’:’alex’}]
列表相比于字符串,不仅可以储存不同的数据类型,而且可以储存大量数据,32位python的限制是 536870912 个元素,64位python的限制是 1152921504606846975 个元素。而且列表是有序的,有索引值,可切片,方便取值。
1.列表的索引,切片
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
l1 = ['alex',True,'wusir','ritian','taibai',3,2] # 索引 print(l1[0]) print(l1[4]) print(l1[-2]) # 输出结果: # alex # taibai # 3 l1 = ['alex',True,'wusir','ritian','taibai',3,2] # 切片 print(l1[0:4]) print(l1[2:-2]) print(l1[1::2]) print(l1[-1:1:-2]) # 输出结果: # ['alex', True, 'wusir', 'ritian'] # ['wusir', 'ritian', 'taibai'] # [True, 'ritian', 3] # [2, 'taibai', 'wusir']
2.列表的增删改查
2.1增
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
l1 = ['alex',True,'wusir','ritian','taibai',3,2] # 增(三种方式) ''' # 第一种 append 增加在最后 ret = l1.append('醉了') print(l1) # 输出结果: # ['alex', True, 'wusir', 'ritian', 'taibai', 3, 2, '醉了'] # 第二种 insert 插入在该索引原来对应的位置的前面 ret = l1.insert(2,'醉了') print(l1) # 输出结果: # ['alex', True, '醉了', 'wusir', 'ritian', 'taibai', 3, 2] #第三种 extend 迭代增加在最后 ret = l1.extend('abcd') print(l1) 输出结果: ['alex', True, 'wusir', 'ritian', 'taibai', 3, 2, 'a', 'b', 'c', 'd'] ret = l1.extend('a,b,c') print(l1) 输出结果:['alex', True, 'wusir', 'ritian', 'taibai', 3, 2, 'a', ',', 'b', ',', 'c'] ret = l1.extend(['a,b','cd']) print(l1) 输出结果:['alex', True, 'wusir', 'ritian', 'taibai', 3, 2, 'a,b', 'cd']
2.2删
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
l1 = ['alex',True,'wusir','ritian','taibai',3,2] # 删 (四种方式) # 第一种 pop 按照索引对应位置删除,有返回值 ret = l1.pop(0) # print(ret) 输出结果:alex 返回值 print(l1) # 输出结果:[True, 'wusir', 'ritian', 'taibai', 3, 2] # 第二种 remove 按照元素删除 ret = l1.remove('ritian') print(l1) # 输出结果:[True, 'wusir', 'taibai', 3, 2] # 第三种 clear 清空列表 ret = l1.clear() print(l1) # 输出结果:[] # 第四种 del # 1.删除列表 del l1 # 2.按索引删除 del l1[1] print(l1) # 输出结果:['alex', 'wusir', 'ritian', 'taibai', 3, 2] # 3.按切片删除 del l1[0:4] print(l1) # 输出结果:['taibai', 3, 2] del l1[1::2] print(l1) # 输出结果:['alex', 'wusir', 'taibai', 2] del l1[-1:1:-2] print(l1) # 输出结果:['alex', True, 'ritian', 3]
2.3改
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
l1 = ['alex',True,'wusir','ritian','taibai',3,2] # 1.按照索引去改,对应的变量:数字,字符串,列表都可以 l1[0] = '12' print(l1) # 输出结果:['12', True, 'wusir', 'ritian', 'taibai', 3, 2] l1[0] = 12 print(l1) # 输出结果:[12, True, 'wusir', 'ritian', 'taibai', 3, 2] # 2.按照切片去改 l1[0:2] = 'qaz',12 print(l1) # 输出结果:['qaz', 12, 'wusir', 'ritian', 'taibai', 3, 2] l1[0:3:2] = 'qaz',12 print(l1) # 输出结果:['qaz', True, 12, 'ritian', 'taibai', 3, 2]
2.4查
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
l1 = ['alex',True,'wusir','ritian','taibai',3,2] # 查 (两种方式) # 第一种 按照索引,切片去查 # 1.索引 l1[0] print(l1[0]) # 输出结果:alex # 2.切片 l1[0:3] print(l1[0:3]) # 输出结果:['alex', True, 'wusir'] # 第二种 for 循环查找 for i in l1: print(i) # 输出结果: alex True wusir ritian taibai 3 2
2.5其他操作
len(长度)(方法计算列表中出现的元素的总位数)
l1 = ['alex',True,'wusir','ritian','taibai',3,2] ret = len(l1) print(ret) # 输出结果; 7
count(数)(方法统计某个元素在列表中出现的次数)
l1 = ['alex',True,'wusir','ritian','alex','taibai',3,'alex',2] ret = l1.count('alex') print(ret) # 输出结果: 3
index(方法用于从列表中找出某个值第一个匹配项的索引位置)
l1 = ['alex',True,'wusir','ritian','taibai',3,2] ret = l1.index('taibai') print(ret) # 输出结果: 4
sort (方法用于在原位置对列表进行排序,默认从小到大)
l1 = [1,3,6,8,7,4,2,9,5,10] l1.sort() # 他没有返回值,只是改变了l1的顺序,所以只能打印l1 print(l1) # 输出结果:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] l1.sort(reverse=True) print(l1) # 输出结果:[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
reverse (方法将列表中的元素反向存放)
l1 = [1,3,6,8,7,4,2,9,5,10] l1.reverse() print(l1) # 输出结果:[10, 5, 9, 2, 4, 7, 8, 6, 3, 1]
3.列表的嵌套
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
l1 = ['小新','egon','wusir',[99,'taibai','ritian',[2,3]],2] # 把'taibai'首字母大写 a = l1[3][1].capitalize() l1[3][1] = a #这两行可以简写成: l1[3][1] = l1[3][1].capitalize() print(l1) # 输出结果: # ['小新', 'egon', 'wusir', [99, 'Taibai', 'ritian', [2, 3]], 2] # 把l1中的99变成'100' l1[3][0] = str(l1[3][0] + 1) print(l1) # 输出结果: # ['小新', 'egon', 'wusir', ['100', 'Taibai', 'ritian', [2, 3]], 2]
二.元组(tuple)
元组被称为只读列表,即数据可以被查询,但不能被修改,所以,字符串的切片操作同样适用于元组。例:(1,2,3)("a","b","c")
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
tu = (1,2,'wusir','taibai',[2,3,4,],True) print(tu[2:]) # 输出结果: # ('wusir', 'taibai', [2, 3, 4], True) # 把元组内元素依次打印出来 for i in tu: print(i) ''' 输出结果: 1 2 wusir taibai [2, 3, 4] True ''' #元素不能更改,但是元素内的元素有可能更改(其内的元素是列表,之后按照列表的操作方法操作就可以) # 比如我们可以把tu中的3改成'姓名' tu[4][1] = '姓名' print(tu) # 输出结果: # (1, 2, 'wusir', 'taibai', [2, '姓名', 4], True)
三.range
range指定范围,生成指定数字,一般与for配合使用
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
for i in range(0,10): print(i) ''' 输出结果: 0 1 2 3 4 5 6 7 8 9 ''' # 把l1 = [1,2,3,'alex',[2,3,'wusir'],7]中的所有元素依次打印出来 l1 = [1,2,3,'alex',[2,3,'wusir'],7] for i in l1: if type(i) == list: for j in i: print(j) else: print(i) ''' 输出结果: 1 2 3 alex 2 3 wusir 7 '''
for i in range(1,10,2): print(i) #[1,3,5,7,9] for i in range(10,0,-1): print(i) #[10,9 ,8 ,7 ,6, 5,4,3,2,1] for i in range(10,-2,-1): print(i,type(i)) #[10,9 ,8 ,7 ,6, 5,4,3,2,1,0,-1]