Python基础Day4
一、列表
①列表list是基础数据类型之一
②列表可以存储大量数据
③列表可索引、可切片、可加步长
④其他语言中也有列表的概念:JS 数组
列表默认存4个值,扩展的话会扩展一倍,即4,8,16...
二、列表的索引、切片、切片+步长
①列表的索引
Li = ['a',100,True,[1,2,3],{'name':'xiaoming','age':18},(111,222,333)]
print(Li[0])
print(Li[-1])
print(Li[3])
# 结果
a
(111, 222, 333)
[1, 2, 3]
②列表的切片
Li = ['a',100,True,[1,2,3],{'name':'xiaoming','age':18},(111,222,333)]
print(Li[1:3])
print(Li[:5])
print(Li[-4:])
# 结果
[100, True]
['a', 100, True, [1, 2, 3], {'name': 'xiaoming', 'age': 18}]
[True, [1, 2, 3], {'name': 'xiaoming', 'age': 18}, (111, 222, 333)]
③列表的切片+步长
Li = ['a',100,True,[1,2,3],{'name':'xiaoming','age':18},(111,222,333)]
print(Li[::2])
print(Li[-1:-5:-2])
print(Li[-1:1:-2])
# 结果
['a', True, {'name': 'xiaoming', 'age': 18}]
[(111, 222, 333), [1, 2, 3]]
[(111, 222, 333), [1, 2, 3]]
三、列表的增删该查及其他方法
A.增:
append(元素) # 在列表的末尾追加元素
Li = ['a','b','c','d','e','f','x','z']
Li.append('qqq') # 在列表的末尾追加元素
Li.append('www') # 在列表的末尾追加元素
print(Li)
# 结果
['a', 'b', 'c', 'd', 'e', 'f', 'x', 'z', 'qqq', 'www']
insert(索引,元素) # 在指定的索引上加入元素(内容)
假如索引超过列表的长度,默认把内瑞追加到列表的最后
Li = ['a','b','c','d','e','f','x','z']
Li.insert(0,'ty') # 在指定的索引插入内容
Li.insert(20,'gg') # 超过列表的长度的索引,默认会追加到列表的末尾
print(Li)
# 结果
['ty', 'a', 'b', 'c', 'd', 'e', 'f', 'x', 'z', 'gg']
extend(元素) # 迭代地追加,将迭代对象的最小元素逐个添加
lis = [1,2,3,4,5,6]
lis.extend('abc')
print(lis)
lis.extend(['qqq','www'])
print(lis)
# 结果
[1, 2, 3, 4, 5, 6, 'a', 'b', 'c']
[1, 2, 3, 4, 5, 6, 'a', 'b', 'c', 'qqq', 'www']
B.删除
pop(索引) # 通过索引删除元素,返回值是被删除的元素
lis = [1, 2, 3, 4, 5, 6, 'a', 'b', 'c', 'qqq', 'www']
a = lis.pop(3) # 将被删除的值存储到变量中
print(a)
print(lis)
# 结果
4
[1, 2, 3, 5, 6, 'a', 'b', 'c', 'qqq', 'www']
remove(元素) # 按元素删除,删除的列表中的第一个找到的元素
lis = [1, 2, 3, 4, 5, 4, 'a', 'b', 'c', 'qqq', 'www']
lis.remove(4) # 删除列表中的第一个元素是4的值
print(lis)
# 结果
[1, 2, 3, 5, 4, 'a', 'b', 'c', 'qqq', 'www']
clear() # 将列表清空
lis = [1, 2, 3, 4, 5, 4, 'a', 'b', 'c', 'qqq', 'www']
lis.clear()
print(lis)
# 结果
[]
del # 删除
① 按索引删除
lis = [1, 2, 3, 4, 5, 4, 'a', 'b', 'c', 'qqq', 'www']
del lis[3]
del lis[-1]
print(lis)
# 结果
[1, 2, 3, 5, 4, 'a', 'b', 'c', 'qqq']
② 按切片删除
lis = [1, 2, 3, 4, 5, 4, 'a', 'b', 'c', 'qqq', 'www']
del lis[3:7]
print(lis)
del lis[-3:-1]
print(lis)
# 结果
[1, 2, 3, 'b', 'c', 'qqq', 'www']
[1, 2, 3, 'b', 'www']
③ 按切片+步长删除
lis = [1, 2, 3, 4, 5, 6, 'a', 'b', 'c', 'qqq', 'www']
del lis[-1:2:-2]
print(lis)
del lis[3:-1:2]
print(lis)
# 结果
[1, 2, 3, 4, 6, 'b', 'qqq']
[1, 2, 3, 6, 'qqq']
④ 在内存级别删除整个列表
lis = [1, 2, 3, 4, 5, 6, 'a', 'b', 'c', 'qqq', 'www']
del lis
print(lis)
# 结果
NameError: name 'lis' is not defined
报错:找不到lis
C 修改:
① 按索引修改
lis = [1,'a',2,'b',3,'c',5,'z',8,'y']
lis[3] = 10
lis[-1] = 'x'
print(lis)
# 结果
[1, 'a', 2, 10, 3, 'c', 5, 'z', 8, 'x']
② 按切片修改
原理:将列表切片的部分清空,将内容迭代地添加
lis = [1,2,3,4,5,6,7,8]
lis[2:5] = 'abczxcqwe'
print(lis)
# 结果
[1, 2, 'a', 'b', 'c', 'z', 'x', 'c', 'q', 'w', 'e', 6, 7, 8]
③ 按切片+步长修改 # 必须一一对应修改,修改的元素不能多也不能少
lis = [1,2,3,4,5,6,7,8]
lis[3:-2:2] = 'ac'
print(lis)
# 结果
[1, 2, 3, 'a', 5, 'c', 7, 8]
以下的方式修改会报错:
lis = [1,2,3,4,5,6,7,8]
lis[3:-2:2] = 'a'
print(lis)
# 结果
报错ValueError: attempt to assign sequence of size 1 to extended slice of size 2
D.查询
① 按索引查询
lis = [1,2,3,4,5,6,7,8]
print(lis[0])
print(lis[-1])
# 结果
1
8
② 按切片查询
lis = [1,2,3,4,5,6,7,8]
print(lis[2:-1])
print(lis[:6])
print(lis[-5:])
# 结果
[3, 4, 5, 6, 7]
[1, 2, 3, 4, 5, 6]
[4, 5, 6, 7, 8]
③ 按切片+步长
lis = [1,2,3,4,5,6,7,8]
print(lis[-1:-5:-1])
print(lis[3:-2:2])
# 结果
[8, 7, 6, 5]
[4, 6]
④ for循环查询
lis = [1,2,3,4,5,6,7,8]
for i in lis:
print(i,end=' ')
# 结果
1 2 3 4 5 6 7 8
其他方法:
len(列表) # 获取列表的长度
count(元素) # 查询元素在列表中出现的次数
index(元素) # 通过元素找到该元素第一个在列表中的索引,找不到会报错
lis = [1,2,3,4,5,6,7,8]
print(len(lis)) # 获取列表的长度
print(lis.count(3)) # 查询元素在列表出现的次数
print(lis.index(3)) # 通过元素找到第一个该元素在列表中的索引
# 结果
8
1
2
sort() # 排序
lis = [1,3,4,1,6,2,8,0,5]
lis.sort()
print(lis)
# 结果
[0, 1, 1, 2, 3, 4, 5, 6, 8]
sort(reverse = True) # 反向排序
lis = [1,3,4,1,6,2,8,0,5]
lis.sort(reverse=True)
print(lis)
# 结果
[8, 6, 5, 4, 3, 2, 1, 1, 0]
reverse() # 列表翻转
lis = [1,3,4,1,6,2,8,0,5]
lis.reverse()
print(lis)
# 结果
[5, 0, 8, 2, 6, 1, 4, 3, 1]
四、列表的嵌套
可用索引 li[0][1]
字符串是不可变的
列表是容器,对其操作会影响到列表的数据
五、元组
概念:只读列表,只允许查询,不允许增删改
元组内有列表,可以修改列表的内容
查询的方式与列表相同
① 按索引查询
② 按切片查询
③ 按切片+步长
④ for循环查询
应用场景:一些非常重要的数据,不允许所有人修改的,放在元组中
六、range() # 数字列表
定义:自定制的数据范围的可迭代对象,可类比成列表
一般和for循环结合使用
range(start,end,步长)
for i in range(1,10,2):
print(i,end=' ')
# 结果
1 3 5 7 9
for i in range(10,1,-1):
print(i, end=' ')
# 结果
10 9 8 7 6 5 4 3 2
七、in 和 not in
判断元素是否在列表(字符串)中
s = 'abc'
print('a' in s)
print('d' in s)
print('z' not in s)
# 结果
True
False
True
八、课外知识
import time # 导入time模块
time.sleep(2) # 设置睡眠时间2秒