Zero-Py系列:Python列表概览(超详细+全面)🎉🎉🎉
目录
对元素操作 ✨✨✨
1.基本操作
- 打印列表
- 访问元素
- 求元素出现次数
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2]
# 打印列表
print(lst) # 输出:[1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2]
# 从后访问元素
print(lst[-1]) # 输出:2
print(lst[-2]) # 输出:1
# 求元素出现次数
print(lst.count(1)) # 输出: 2
- 长度,最大值,最小值,总和
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(len(lst)) # 9
print(min(lst)) # 1
print(max(lst)) # 9
print(sum(lst)) # 45
2.添加元素
- 在列表末尾添加元素
list.append('插入元素')
- 在列表中插入元素
lst = ['honda', 'yamaha', 'suzuki']
lst.insert(0, 'a')
print(lst) # ['a', 'honda', 'yamaha', 'suzuki']
lst.insert(2, 'b')
print(lst) # ['a', 'honda', 'b', 'yamaha', 'suzuki']
3.删除元素
🚨注意:如果要从列表中删除元素,且不再使用它,用 del语句 如果删除元素后继续使用,用 pop() 方法
- del 语句删除
lst = ['a', 'ab', 'abc']
# 不能再次使用该元素
del lst[0] # 输出:['ab', 'abc']
- pop() 方法删除
lst = ['a', 'ab', 'abc', 'd', 'e', 'f', 'j']
# 可以直接使用
lst.pop() # ['a', 'ab', 'abc', 'd', 'e', 'f']
# 删除列表末尾元素,并且可以继续使用该元素
popped_ele = lst.pop() # ['a', 'ab', 'abc', 'd', 'e'] popped_ele = 'd'
# 删除列表中任意位置元素,且可继续使用
ele = lst.pop(1) # ['a', 'abc', 'd', 'e'] ele = 'ab'
- remove() 方法删除
🚨注意:若要通过遍历列表 使用 remove() 删除值,需要在后面加上[::-1],否则不能干净的删除列表中的元素😭😭😭
lst = ['a', 'b', 'c', 'd', 'e', 'f', 'j', 'a']
# remove() 可根据值来删除元素
ele = lst.remove('a') # ['b', 'c', 'd', 'e', 'f', 'j', 'a']
# 但是只能删除第一个指定的值,可以使用while循环完全删除
while 'a' in lst:
lst.remove('a')
print(lst) # ['b', 'c', 'd', 'e', 'f', 'j']
# 额外说明,若要remove() 删除值,需要在后面加上[::-1]
ls_one = [1, 3, 3, 4, 5, 6, 7, 3, 9, 10]
ls_two = [1, 3, 3, 4, 5, 6, 7, 3, 9, 10]
for val in ls_one:
if val % 2 != 0:
ls_one.remove(val)
print(ls_one) # [3, 4, 6, 3, 10]
for val in ls_two[::-1]:
if val % 2 != 0:
ls_two.remove(val)
print(ls_two) # [4, 6, 10]
4.元素排序
- 使用 sort() 方法永久排序
# 永久排序
lst = ['bmw', 'Bmw', 'audi', 'toyota', 'subaru']
lst.sort() # ['Bmw', 'audi', 'bmw', 'subaru', 'toyota']
lst.sort(reverse=True) # ['toyota', 'subaru', 'bmw', 'audi', 'Bmw']
- 使用 sorted() 函数临时排序
# 临时排序
lst = ['bmw', 'Bmw', 'audi', 'toyota', 'subaru']
# 正序排列
lst_reverse = sorted(lst)
print(lst_reverse) # ['Bmw', 'audi', 'bmw', 'subaru', 'toyota']
print(lst) # ['bmw', 'Bmw', 'audi', 'toyota', 'subaru']
# 降序排列
print(sorted(lst, reverse=True)) # ['toyota', 'subaru', 'bmw', 'audi', 'Bmw']
- 反向打印列表
注意: reverse() 是永久的, 但可以通过使用两次来返回原来的列表
lst = ['bmw', 'Bmw', 'audi', 'toyota', 'subaru']
# 使用reverse() 方法反向打印列表
# 注意:reverse() 不是按照降序排列列表,而是反转列表
lst.reverse() # ['subaru', 'toyota', 'audi', 'Bmw', 'bmw']
对列表操作 ✨✨✨
1.遍历列表
🚨注意:print方法内有end参数,这个参数规定print函数输出的结尾字符,默认是回车符。通过修改其值可以实现一行且以 '修改的参数值'为间隔输出
我们可以指定这个结尾符为空格,从而实现整行输出`
lsts = [1, 2, 3, 4, 5, 6, 7, 8, 9]
# 输出:1 2 3 4 5 6 7 8 9
for lst in lsts:
print(lst, end=' ')
2.巧用range() 函数
# range() 基本用法
for val in range(11): # 0 1 2 3 4 5 6 7 8 9 10
print(val, end=' ')
for val in range(1, 11, 2): # 1 3 5 7 9
print(val, end=' ')
# 使用 range() 创建数值列表
lst = list(range(1, 6)) # [1, 2, 3, 4, 5]
3.列表推导式 📌
使用更简短的代码实现列表的创建
实现规则:将 for 循环和创建新元素的代码合并成一行,并自动追加新元素
# 例如:创建平方数列表
squares = [value ** 2 for value in range(1, 11)]
print(squares) # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
4.切片
切片 => 可以让我们处理列表的部分元素
# 创建切片
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
lst_one = lst[1:3] # [2, 3]
lst_two = lst[:3] # [1, 2, 3]
lst_three = lst[-2:] # [8, 9]
# 遍历切片
for value in lst[:3]:
print(value, end=' ') # 1 2 3
5.复制列表 📌📌📌
反例
- 反例 => 直接使用 = 复制 ❌❌❌
🚨这里将 fruits 赋给 lst_new,而不是将 fruits副本 赋给 lst_new, 这种语法是将新变量 lst_new 关联到 已与 fruits 相关联的列表,实际上两个变量指向同一个列表
fruits = ['apple', 'banana', 'strawberry', 'lemon']
lst_new = fruits
fruits.append('a')
lst_new.append('b')
print(fruits) # ['apple', 'banana', 'strawberry', 'lemon', 'a', 'b']
print(lst_new) # ['apple', 'banana', 'strawberry', 'lemon', 'a', 'b']
浅拷贝
- 1.copy() 方法
对于List来说,其第一层,是实现了深拷贝,但对于其内嵌套的List,仍然是浅拷贝。
lst = [1, [2, 3], 4, 5]
lst_new = lst.copy()
print(lst_new) # [1, [2, 3], 4, 5]
lst_new[0] = 10
lst_new[1][0] = 10
print(lst) # [1, [10, 3], 4, 5]
print(lst_new) # [10, [10, 3], 4, 5]
- 2.使用列表生成式
只对第一层深拷贝
lst = [1, [2, 3], 4, 5]
lst_new = [i for i in lst]
print(lst_new) # [1, [2, 3], 4, 5]
lst_new[0] = 10
lst_new[1][0] = 10
print(lst) # [1, [10, 3], 4, 5]
print(lst_new) # [10, [10, 3], 4, 5]
- 3.for循环遍历
同上,只对第一层深拷贝
lst = [1, [2, 3], 4, 5]
lst_new = []
for i in lst:
lst_new.append(i)
print(lst_new) # [1, [2, 3], 4, 5]
lst_new[0] = 10
lst_new[1][0] = 10
print(lst) # [1, [10, 3], 4, 5]
print(lst_new) # [10, [10, 3], 4, 5]
- 4.使用切片
同上,只对第一层深拷贝 (部分位置可参考 切片 部分)
ps.省略起始索引和终止索引( [:] ), 可创建一个包含整个列表的切片
lst = [1, [2, 3], 4, 5]
lst_new = lst[:]
print(lst_new) # [1, [2, 3], 4, 5]
lst_new[0] = 10
lst_new[1][0] = 10
print(lst) # [1, [10, 3], 4, 5]
print(lst_new) # [10, [10, 3], 4, 5]
深拷贝
- 用copy.deepcopy() 方法
🚨注意:需要先导入 copy 模块
用 copy.deepcopy() 方法 ,无论多少层,无论怎样的形式,得到的新列表都是和原来无关的最安全有效的方法
import copy
lst = [1, [2, 3], 4, 5]
lst_new = copy.deepcopy(lst)
print(lst_new) # [1, [2, 3], 4, 5]
lst_new[0] = 10
lst_new[1][0] = 10
print(lst) # [1, [2, 3], 4, 5]
print(lst_new) # [10, [10, 3], 4, 5]
元组 ✨✨✨
不可变的列表称为 元组
1.修改元组变量
demo_tuple = (1, 2, 3)
print(demo_tuple) # (1, 2, 3)
demo_tuple = (1, 4, 5)
print(demo_tuple) # (1, 4, 5)
最后
🌈Zero-Py系列(Python基础知识部分)创建是想要对Python基础语法进行一个全面的总结,便于大家系统的查找相关知识点和一些技巧,由于想要尽量全面展示知识点,所以分为几个模块来阐述
如果想要对总体知识进行检索,可以跳转链接: Python基本知识点以及一些处理技巧概览(📌总体大纲–可自由检索)进行查看
如果有什么不足或者疑问,欢迎留言讨论🥰🥰🥰