一、列表称之为容器型数据类型
li = [123,'老男孩',True,[1,2,3],{'name':'alex'},(1,2,3)]
数字,字符串,bool,列表,字典,元组。。
#列表可以和字符串一样,按照索引,切片取值
1)按索引 取值
l1 = ['wushr',True,'alex','laonanhai','ritian','taibai'] print(l1[1],type(l1[1])) True <class 'bool'>
2)按切片取值
l1 = ['wushr',True,'alex','laonanhai','ritian','taibai'] print(l1[1:3]) [True, 'alex'] l1 = ['wushr',True,'alex','laonanhai','ritian','taibai'] print(l1[::-2]) #还有步长 ['taibai', 'laonanhai', True]
1、增
append 追加 【格式: 列表.append(追加内容,仅限一个)】
l1 = ['wushr',True,'alex','laonanhai','ritian','taibai']
l1.append(123) #这只是一个动作
print(l1)
['wushr', True, 'alex', 'laonanhai', 'ritian', 'taibai', 123]
l1.append 这是一个动作,不能打印,不能更改
l1 = ['wushr',True,'alex','laonanhai','ritian','taibai'] print(l1.append('女神')) None #没有返回值
例题:输入新员工的姓名,再按Q(q)键退出,不区分大小写
insert 插入 【格式: 列表.insert(索引,插入的内容仅限一个)】
l1 = ['wushr',True,'alex','laonanhai','ritian','taibai'] l1.insert(1,123) print(l1) ['wushr', 123, True, 'alex', 'laonanhai', 'ritian', 'taibai'] #你要插入的内容会出现在索引号的前面
extend 迭代着追加 【格式: 列表.extend([内容])】
事实上并没有要求加“[]”,但是如果不加会出现,你追加的内容以最小元素加入列表
l1 = ['wushr',True,'alex','laonanhai','ritian','taibai'] l1.extend('asd') #没有加“[]” print(l1) ['wushr', True, 'alex', 'laonanhai', 'ritian', 'taibai', 'a', 's', 'd'] #'asd'分开成最小元素加入列表
添加“[]”
l1 = ['wushr',True,'alex','laonanhai','ritian','taibai'] l1.extend(['asd']) #添加了"[]" print(l1) ['wushr', True, 'alex', 'laonanhai', 'ritian', 'taibai', 'asd'] #元素'asd'没有被拆散
2、删
pop 按照索引去删除,有返回值 【格式:列表.pop(索引)】
l1 = ['wushr',True,'alex','laonanhai','ritian','taibai'] n = l1.pop(0) #输出返回值 print(n) print(l1) wushr #返回值为 wushr [True, 'alex', 'laonanhai', 'ritian', 'taibai']
remove 按照元素删除 【格式:列表.remove(所需要删除的内容)】
l1 = ['wushr',True,'alex','laonanhai','ritian','taibai'] l1.remove(True) #删除元素True print(l1) ['wushr', 'alex', 'laonanhai', 'ritian', 'taibai']
clear 清空列表,但列表还存在,只是没内容了【格式:列表.clear()】
l1 = ['wushr',True,'alex','laonanhai','ritian','taibai'] l1.clear() print(l1) [] #列表已被清空,但列表还在
## del ##
1.在内存级别删除列表【彻底删除】 【格式:del 列表】
l1 = ['wushr',True,'alex','laonanhai','ritian','taibai'] del l1 print(l1) NameError: name 'l1' is not defined #列表已被删除
2.按照索引删除。 【格式:del 列表[索引]】
l1 = ['wushr',True,'alex','laonanhai','ritian','taibai'] del l1[1] print(l1) ['wushr', 'alex', 'laonanhai', 'ritian', 'taibai'] #元素“True”删除
3.切片删除+步长 【格式:del 列表[首索引:尾索引:步长]】
l1 = ['wushr',True,'alex','laonanhai','ritian','taibai'] del l1[::2] #每隔一个删除 print(l1) [True, 'laonanhai', 'taibai']
3、改
按照索引去改
l1 = ['wushr',True,'alex','laonanhai','ritian','taibai'] l1[0] = '晓峰' print(l1) ['晓峰', True, 'alex', 'laonanhai', 'ritian', 'taibai']
按照切片去改,先将切片内的内容全部删除,在迭代着添加内容
l1 = ['wushr',True,'alex','laonanhai','ritian','taibai'] l1[:3] = '跨世纪' #如果只是这样 print(l1) ['跨', '世', '纪', 'ritian', 'taibai'] #跨世纪就会分开进入加入 l1 列表这一点和 “增” 的 extend 很像 #正确做法: l1[:3] = ['跨世纪',111] #添加 “[]” 保护你要添加的内容 print(l1) ['跨世纪', 111, 'laonanhai', 'ritian', 'taibai']
4、查
1.按照索引切片去查
l1 = ['wushr',True,'alex','laonanhai','ritian','taibai'] print(l1[0]) #索引 print(l1[:5]) #切片 wushr ['wushr', True, 'alex', 'laonanhai', 'ritian']
2.for 循环 也可以查阅
l1 = ['wushr',True,'alex','laonanhai','ritian','taibai'] for i in l1: print(i)
5、其他操作方法
1. len 个数,总长度 【格式:len(列表)】
l1 = ['wushr',True,'alex','laonanhai','ritian','taibai'] cou = len(l1) print(cou) 6
2. count 元素个数 【格式:列表.count(检测的元素)】
l1 = ['wushr',False,'alex','laonanhai','ritian','taibai',1,1,1,1] z = l1.count(1) print(z) 4
特例: True 和 1
l1 = [1,1,1,1,True,True,True,True] z = l1.count(1) print(z) 8 #我们知道只有4个1,但在计算机里True也是1
3. index 通过元素找索引,可切片,找不到报错 【格式: 列表.index(检测的元素)】
【find只适用于字符串】
l1 = ['wushr',True,'alex','laonanhai','ritian','taibai'] cou = l1.index('alex') print(cou) 2 #该元素在第二位 l1 = ['wushr',True,'alex','laonanhai','ritian','taibai'] cou = l1.index('alex',3) print(cou) ValueError: 'alex' is not in list #报错
6、排序,翻转
a = [1,3,5,9,7,6,2,4,8]
1.sort 从小到大,正序排序 【格式:列表.sort()】
a = [1,3,5,9,7,6,2,4,8] a.sort() print(a) [1, 2, 3, 4, 5, 6, 7, 8, 9]
2.sort(reverse【相反,倒序】= True) 从大到小,倒序排列
a = [1,3,5,9,7,6,2,4,8] a.sort(reverse=True) #在原基础上加“reverse=True” print(a) [9, 8, 7, 6, 5, 4, 3, 2, 1]
3.reverse 翻转 【格式:列表.reverse()】
a = [1,3,5,9,7,6,2,4,8] a.reverse() print(a) [8, 4, 2, 6, 7, 9, 5, 3, 1]
列表的嵌套:
现将列表 l1里的内容全部排列出来,包括小列表里的内容
我想将上面列表中的 99 换成字符串 '100' 该怎么做
l1 = ['wusir','alex',[99,'taibai','98'],21] #l1[2]表示 [99,'taibai','98'] . l1[2][0] 表示 [99,'taibai','98'] 里的 99
l1[2][0] = '100' print(l1)
['wusir', 'alex', ['100', 'taibai', '98'], 21]
二、元组
元组 只读列表,不能增删改,只能查询
1.索引,切片,步长
tu = (1,3,5,9,7,6,2,4,8) print(tu[2]) print(tu[::2]) 5 (1, 5, 7, 2, 8)
#可以执行 for 循环,查询
2. index(通过元素找索引),len(计算字符串的长度即总个数) count(计算某元素出现的个数)
3.元组中的元素只能查阅,不能更改,但是如果元组当中有列表,字典之类的,可以进行更改【即 :儿子不能改,但孙子能改】
tu = ('wushr','alex',[22,44,'taibai']) tu[0].append('女神') #追加‘女神’ print(tu) AttributeError: 'str' object has no attribute 'append' #报错 tu = ('wushr','alex',[22,44,'taibai']) tu[-1].append('女神') print(tu) ('wushr', 'alex', [22, 44, 'taibai', '女神']) #追加成功
4.删除元组 del :将元组彻底删除
tu = ('wushr','alex',[22,44,'taibai']) del tu print(tu) NameError: name 'tu' is not defined #元组被彻底删除了
三、range 常被当作自定义的数字范围的列表 【格式:起始位,末位,步长】
满足顾头不顾腚,可以加步长,常与 for 循环结合使用
for i in range (1,11,2): #(1,11,2) print(i) 1 3 5 7 9