工程师们大家好,配套免费视频平时上班周末录制
1.列表
在程序里面存储一个元素用普通类型 int str就可以了
存储多个元素就需要用到列表:列表可以⼀次性存储多个数据,且可以为不同数据类型,下标从零开始。
my_list = ['天', '青', '色']
print(my_list) # 打印:['天', '青', '色']
print(type(my_list)) # 打印:<class 'list'>
这就是列表,天、青、色 分别为里面的三个元素
下标为 0 1 2 列表的长度len(my_list)为3
不同的数据类型: my_list2 = ['天', '青', '色' , 1,2] 也是可以的
列表是多个元素的集合,所以我们可以对其增删改查
1.1增加元素
直接用+号
# 原列表
my_list = ['天', '青', '色']
# ['等', '烟', '雨']是另外的列表
# 结果:['天', '青', '色', '等', '烟', '雨']
# 组合为了一个新的列表
print(my_list + ['等', '烟', '雨'])
# 打印原列表:['天', '青', '色'] 没有改变
print(my_list)
append方法
# 原列表
my_list = ['天', '青', '色']
# 增加一个元素'等'
my_list.append('等')
# 打印:['天', '青', '色', '等']
print(my_list)
# append一个列表
my_list.append(['烟', '雨'])
# 打印:['天', '青', '色', '等', ['烟', '雨']]
# 要注意 是把列表作为一个独立的元素加在了my_list中
print(my_list)
extend方法
# 原列表
my_list = ['天', '青', '色']
# 增加一个元素'等'
my_list.extend('等')
# 打印:['天', '青', '色', '等']
print(my_list)
# append一个列表
my_list.extend(['烟', '雨'])
# 打印:['天', '青', '色', '等', '烟', '雨']
# 要注意 是把增加的列表 每个元素取出来 作为独立元素加在了my_list中
print(my_list)
倍数增加
my_list = ['天', '青', '色']
my_list2 = my_list * 2
# ['天', '青', '色', '天', '青', '色']
print(my_list2)
# 部分扩容:['天', '青', '天', '青'] [0:2]是截取的意思 后面看
list_ = my_list[0:2] * 2
print(list_)
insert
my_list = ['天', '青', '色', '等', '烟', '雨']
my_list.insert(1, '说重点') # 在下标为1的位置 插入字符串 说重点
print(my_list)
my_list.insert(-1, '军哥') # -1插入后变为倒数第二位 -2 插入后倒数第三位 以此类推
print(my_list)
# 想插入到最后
my_list.insert(len(my_list), '军大哥')
print(my_list)
print(len(my_list)) # 表示集合的长度
1.2删除
del
my_list = ['天', '青', '色', '等', '烟', '雨']
# 删除下标为0的元素
del my_list[0] # 结果 ['青', '色', '等', '烟', '雨']
print(my_list)
del my_list
# print(my_list) # NameError: name 'my_list' is not defined
pop
my_list = ['天', '青', '色', '等', '烟', '雨']
pop = my_list.pop() # 默认弹出最后一个
print(my_list)
print(pop)
list_pop = my_list.pop(1) # 可以根据下标来弹出
print(my_list)
print(list_pop)
remove
my_list = ['天', '青', '色', '等', '烟', '天', '雨']
remove = my_list.remove('天')
print(remove) # 没有返回值 直接移除
print(my_list) # 结果:['青', '色', '等', '烟', '天', '雨'] 只移除了第一个匹配的
# ValueError: list.remove(x): x not in list 报错 不能移除里面没有的元素 不能根据下标移除
my_list.remove(0)
print(my_list)
clear
my_list = ['天', '青', '色', '等', '烟', '天', '雨']
my_list.clear()
print(my_list) # 结果:[]
1.3修改
my_list = ['天', '青', '色', '等', '烟', '雨']
my_list[1] = '黄' # 根据下标修改数据
print(my_list)
1.4查询
统计与下标查询
my_list = ['天', '青', '色', '等', '烟', '雨', '天']
count = my_list.count('天') # 统计'天'这个元素出现的次数
print(count) # 2
print(my_list[1]) # 打印下标为1的元素 结果: 青
index = my_list.index('天') # 查找天这个元素的 下标 只找第一个
print(index)
list_index = my_list.index('天', 2, len(my_list)) # 从下标为2开始查找
print(list_index)
print(my_list.index('abc')) # 报错 ValueError: 'abc' is not in list
1.5列表切片
切片是形成一个新的列表 原列表不会变
my_list = ['天', '青', '色', '等', '烟', '雨']
list1 = my_list[1:4] # 1-4 包含下标1 不包含4
print(list1) # ['青', '色', '等']
print(my_list) # 切片是形成一个新的列表 原列表不会变
list2 = my_list[1:] # 下标1到最后
print(list2)
list3 = my_list[1:-1] # -1不包含最后一位
print(list3)
list4 = my_list[1::2] # 下标为1后面开始切 间隔2 也就是135
print(list4)
list5 = my_list[1::-1] # 切下标1-0 反过来了
print(list5) # 结果:['青', '天']
list6 = my_list[-3:] # 切倒数第三位到最后
print(list6)
1.6判断
my_list = ['天', '青', '色', '等', '烟', '雨']
print('天' in my_list) # 天在列表中 返回true
print('天' not in my_list) # false
print(not '天' in my_list) # false
1.7列表反转
my_list = ['天', '青', '色', '等', '烟', '雨']
reverse = my_list.reverse()
print(reverse) # None
print(my_list) # 注意是:原列表反转
1.8排序
my_list = ['天', '青', '色', '等', '烟', '雨']
my_list2 = [1, 7, 6, 4, 5, 2]
sort = my_list2.sort()
print(sort) # None
print(my_list2) # 注意原列表排序改变 默认升序
my_list2.sort(reverse=True) # 降序 [7, 6, 5, 4, 2, 1]
print(my_list2)
# (1, 5)这个是元组 后面会学习
my_list3 = [(1, 5), (2, 4), (3, 6), (4, 3)]
# 传入一个元组(1,5)获取下标为1的 也就是5
# 这个叫方法 后面学习 理解可以自定义排序就可以了
def get_two(a):
return a[1]
my_list3.sort(key=get_two)
# [(4, 3), (2, 4), (1, 5), (3, 6)] 按第二位排序了
print(my_list3)
1.9打乱列表
import random
my_list = ['天', '青', '色', '等', '烟', '雨']
random.shuffle(my_list) # 随机打乱列表
print(my_list)
2.0列表嵌套
name_list = [['⼩明', '⼩红', '⼩绿'], ['Tom', 'Lily', 'Rose'], 100]
print(name_list[2]) # 100
print(name_list[0]) # name_list的0号也是一个列表
print(name_list[0][1]) # 取name_list 0号元素 的第一个元素
2.1列表复制
my_list = ['天', '青', '色', '等', '烟', '雨']
my_list2 = my_list # 把my_list的地址值给my_list2 修改my_list2的时候 my_list也会变 切记
print(my_list2)
print(id(my_list))
print(id(my_list2))
copy = my_list.copy()
print(copy)
print(id(copy))
# 打印结果:可以看到copy的时候 地址值跟原列表不一样
# 而等号赋值的时候是相同的
'''
['天', '青', '色', '等', '烟', '雨']
2169696444936
2169696444936
['天', '青', '色', '等', '烟', '雨']
2169696445000
'''
2.2列表循环
my_list = ['天', '青', '色', '等', '烟', '雨']
index = 0
i = len(my_list)
while index < i:
print(my_list[index]) # 根据下标遍历
index += 1
for循环
my_list = ['天', '青', '色', '等', '烟', '雨']
for a in my_list:
print(a)
for循环
my_list = ['天', '青', '色', '等', '烟', '雨']
info = [a for a in my_list] # 循环my_list元素 挨个赋值给a 把a存在info形成一个新的列表
print(info) # ['天', '青', '色', '等', '烟', '雨']
# 前面是把a作为info的列表元素 这个是把 print(a)的返回值作为元素
info = [print(a) for a in my_list] # 但是可以打印
print(info) # [None, None, None, None, None, None]
# 方法是后面学习的 大家理解 可以用循环的a做其他事情就可以了
def test(a):
print(f'测试打印:{a}')
info = [test(a) for a in my_list]
print(info) # [None, None, None, None, None, None]
for range循环
my_list = ['天', '青', '色', '等', '烟', '雨']
r = range(10) # 生成0-10 不包含10的range对象 可以用for遍历
print(r)
for i in r:
print(i, end='\t')
print()
for i in range(1, 11): # 1-11 不包含11
print(i, end='\t')
print()
for i in range(0, 35, 5): # 步长为5 0 5 10 15 20 25 30
print(i, end='\t')
print()
for i in range(0, -10, -1): # 0到-10 不包含-10
print(i, end='\t')
# 所以也可以用range来遍历
print()
for i in range(len(my_list)):
print(my_list[i], end='\t')