今日大纲
一、列表和列表的常用方法
二、元组
三、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)
元组是只读列表,只允许查询,不允许增、删、改