今日大纲
一、列表和列表的常用方法
二、元组
三、range()
一、列表和列表的常用方法
列表是python的基础数据类型之一,其他语言中也有列表的概念,例如在JS中叫数组。列表相比于字符串,不仅可以存储各种数据类型,还存储大量的数据类型,32位python的限制是 536870912 个元素,64位python的限制是 1152921504606846975 个元素。
列表是有序的,有索引值,可切片,方便取值。
例如:
list = ['alex',100,True,[1,2,3],{'name':'taibai'},(22,33)]
1、列表的索引
列表的索引与字符串相同,都是索引、切片、步长
例如:
list=['alex',100,True,[1,2,3],{'name':'taibai'},(22,33)] print(list[0],type(list[0])) print(list[1],type(list[1])) print(list[:4]) #输出结果: #alex <class 'str'> #100 <class 'int'> #['alex', 100, True, [1, 2, 3]]
2、列表的增、删、改、查、其他方法
(1)列表的增(3种方法)
append():在列表的最后追加,没有返回值
insert():根据位置增加
extend():在列表的最后追加,按照最小单元形式
例如:
l1=['alex','wusir','taibai','egon','景女神','文周','日天'] l1.append([1,2,3]) # print(l1.append([1,2,3]))#没有返回值,因为l1.append([1,2,3])是一个过程 print(l1) 输出结果: ['alex', 'wusir', 'taibai', 'egon', '景女神', '文周', '日天', [1, 2, 3]]
l1=['alex','wusir','taibai','egon','景女神','文周','日天'] l1.insert(1,'抱怨')#在位置1前加入 print(l1) 输出结果: ['alex', '抱怨', 'wusir', 'taibai', 'egon', '景女神', '文周', '日天']
1=['alex','wusir','taibai','egon','景女神','文周','日天'] l1.extend('abc')#['alex','wusir','taibai','egon','景女神','文周','日天','a','b','c'] l1.extend([111,222,333])#['alex','wusir','taibai','egon','景女神','文周','日天',111,222,333] l1.extend(['alex','wusir'])#['alex','wusir','taibai','egon','景女神','文周','日天','alex','wusir']
(2)列表的删(4种方法)
pop():按照索引的位置删除,有返回值,返回值是被删除的元素
remove():按照元素删除
clear():清空
del():① 按照索引的位置删除
②按照切片和步长删除
③全部清空
#pop() l1=['alex','wusir','taibai','egon','景女神','文周','日天'] l1.pop(0) print(l1.pop(0)) # 有返回值,返回值是删除的内容 print(l1) 输出结果是 wusir ['taibai', 'egon', '景女神', '文周', '日天'] #remove l1=['alex','wusir','taibai','egon','景女神','文周','日天'] l1.remove('alex') print(l1) 输出结果是: ['wusir', 'taibai', 'egon', '景女神', '文周', '日天'] #clear l1=['alex','wusir','taibai','egon','景女神','文周','日天'] l1.clear() print(l1) 输出结果是: [] #del 从内存上删除 l1=['alex','wusir','taibai','egon','景女神','文周','日天'] del l1 print(l1) 输出结果是: 出错,NameError: name 'l1' is not defined #del 按索引删除 l1=['alex','wusir','taibai','egon','景女神','文周','日天'] del l1[0] print(l1) 输出结果是: ['wusir', 'taibai', 'egon', '景女神', '文周', '日天'] #del 按照切片删除 l1=['alex','wusir','taibai','egon','景女神','文周','日天'] del l1[0:2] print(l1) 输出结果是: ['taibai', 'egon', '景女神', '文周', '日天'] #del 按照切片+步长删除 l1=['alex','wusir','taibai','egon','景女神','文周','日天'] del l1[::2] print(l1) 输出结果是: ['wusir', 'egon', '文周']
(3)改:直接用=将更改的内容赋值给被更改的内容
①按索引更改
②按切片更改:可在切片位置放任意多个参数
③按切片加步长更改:只能按照切片宽度放置参数个数
#按索引更改,一次只能更改一处 l1=['alex','wusir','taibai','egon','景女神','文周','日天'] l1[0] = 'abc' print(l1) 输出结果: ['abc', 'wusir', 'taibai', 'egon', '景女神', '文周', '日天'] #按切片更改 l1=['alex','wusir','taibai','egon','景女神','文周','日天'] l1[:4]=[11,22,33,44,55,66] print(l1) 输出结果是: [11, 22, 33, 44, 55, 66, '景女神', '文周', '日天'] #按切片加步长更改 l1=['alex','wusir','taibai','egon','景女神','文周','日天'] l1[:4:2]=[11,22] print(l1) 输出结果是: [11, 'wusir', 22, 'egon', '景女神', '文周', '日天']
(4)查
查询方式有两种,①按照索引查;②用for循环
(5)其他方法
其他方法就是和字符串的其他方法类似
len():求数组的长度
count():求数组种某个元素的个数
index():通过元素找索引,数组不能用find()
sort():排序
l2 = [1, 4, 5, 9, 5] l2.sort() # 数字从小到大 l2.sort(reverse=True) # 数字从大到小 l2.reverse() # 反转
二、元组
tu1=('alex','wusir',['taibai',99,'ritian'],20)
1、查询方式:与列表相同
2、可使用index、count、len
3、应用场景:一些非常重要的数据不允许任何人修改就放在元组种。
4、元组的儿子不能修改,但是孙子可以修改
例如:
tul1=('alex','wusir',['taibai',99,'ritian'],20) #tul1[0]='namsahn'#元组里儿子不允许修改 tul1[2][0]=123#元组里的孙子辈可以增删改 tul1[2].append('a') print(tul1) 输出结果: ('alex', 'wusir', [123, 99, 'ritian', 'a'], 20)
三、range
自定制数据范围的可迭代对象,可以类比成列表,只是和for循环结合使用
例如:
for i in range(1, 20, 2): #打印1~20之间的奇数 print(i) for i in range(10, -1, -1): #反向步长,打印10`0 print(i)
例题:
#打印列表中的索引值 l1 = ['alex', 'wusir', 'taibai', 'egon', '景女神', '文周', '日天'] for i in l1: print(l1.index(i)) # 方法1:列表中不能有重复的元素 for i in range(0, len(l1)): # 方法2:列表中可以有重复的元素 print(i)
元组是只读列表,只允许查询,不允许增、删、改