〖Python全栈白宝书-免费版㉒〗- Python列表常用方法
- 该篇文章为 Python全栈白宝书-免费版试读部分,觉得还可以的小伙伴欢迎订阅下方推荐的 Python全栈白宝书。
- 推荐: Python全栈白宝书专栏,免费阶段订阅数量4300+,购买任意白宝书体系化专栏可加入TFS-CLUB 私域社区。
- 福利:加入社区的小伙伴们,除了可以获取博主所有付费专栏的阅读权限之外,还有机会加入 星荐官共赢计划 ,详情请戳我 。
- 推荐他人订阅,可获取扣除平台费用后的35%收益。
- 作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 跨域学习者,从事过全栈研发、产品经理等工作,目前任某金融品类App负责人。
- 荣誉:2022年度博客之星Top4、博客专家认证、全栈领域优质创作者、新星计划导师,“星荐官共赢计划” 发起人。
- 现象级专栏《白宝书系列》作者,文章知识点浅显易懂且不失深度;TFS-CLUB社区创立者,旨在以“赋能 共赢”推动共建技术人成长共同体。
- 🏆 白宝书系列专栏
专栏系列(点击解锁) | 学习路线(点击解锁) |
---|---|
Python全栈白宝书 | 零基础入门篇 |
语法进阶篇 | |
自动化办公篇 | |
自动化测试实战篇 | |
数据库开发实战篇 | |
爬虫入门与实战 | |
数据分析篇 | |
前端入门+flask 全栈篇 | |
django+vue全栈篇 | |
拓展-人工智能入门 |
文章目录
⭐️ 列表(元组)基本操作符回顾
🌟 len()函数在列表与元组上的使用
示例如下:
names = ['Neo', 'Lily', 'Jack']
length = len(names)
print(length)
# 执行结果如下
# >>> 3
注意:len()函数可以计算除了数字类型之外的其他所有数据类型的长度
🌟 列表(元组)之间的累加与乘法
示例如下:
names = ['Neo', 'Lily', 'Jack']
new_names_01 = names + names
print(new_names_01)
names = ['Neo', 'Lily', 'Jack']
new_names_01 = names * 2
print(new_names_01)
# 输出结果如下:
# >>> ['Neo', 'Lily', 'Jack', 'Neo', 'Lily', 'Jack']
# >>> ['Neo', 'Lily', 'Jack', 'Neo', 'Lily', 'Jack']
🌟 in 和 not in 在列表(元组)中的用法
- in :判断某个成员(元素)是否在该数据结构中,返回结果为布尔值。
- not in :判断某个成员(元素)是否不在该数据结构中,返回结果为布尔值。
示例如下:
names = ['Neo', 'Lily', 'Jack']
print(bool('Adam' in names))
print(bool('Adam' not in names))
# 执行结果如下:
# >>> False
# >>> True
⭐️ 列表常用方法
🌟 append() 函数
append()函数的功能:将一个元素添加当当前列表中
append()函数的用法:list_append(new_item)
,new_item为添加进列表的新的元素(成员)
append()函数的注意事项:
- 被添加的元素添加到末尾
- append() 函数是在原有列表的基础上进行添加,不需要额外的添加新的变量
示例如下:
names = ['Neo']
names.append('Jack')
print(names)
# 执行结果如下:
# >>> ['Neo', 'Jack']
a = [1, 2, 3]
b = [4, 5, 6]
print(a.append(1))
print(a)
a.append(b)
print(a)
# 执行结果如下:
# >>> [1, 2, 3, 1]
# >>> Node
# >>> [1, 2, 3, 1, [4, 5, 6]] a.append(b) 会将整个列表当做一个元素添加进去
这里我们注意到 print(a.append(1))
返回的是 Node
,这是为什么呢?
原因是append方法只是在恰当的位置修改原来的列表!也就是说,不是返回一个列表,而只是修改原来的列表,所以如果用 等式 输出的话,返回是None 。去掉返回值即可得到新的列表!
看下面两个示例:
# 原代码:
list= [1,2,3,4]
list= list.append(5)
print(list)
# 输出:
# >>> None
# 修改后代码
list= [1,2,3,4]
list.append(5)
print(list)
# 输出:
# >>> 1,2,3,4,5
🌟 insert() 函数
insert() 函数的功能:讲一个元素添加到列表的指定位置中
insert() 函数的用法:list.insert(index, new_item)
, index为新的元素放在的新的位置(数字,下标位),new_item为填的新成员(元素)
insert() 函数与append()函数的区别:
- insert() 函数可以将元素添加至任意的位置,而append()函数只能将元素添加之末尾。
- 如果insert() 函数传入的位置不存在,则将新的元素添加至列表结尾
示例如下:
friuts = ['橘子', '香蕉', '火龙果']
friuts.insert(1, '苹果')
print(friuts)
# 执行结果如下:
# >>> ['橘子', '苹果', '香蕉', '火龙果']
friuts.insert(10, '鸭梨')
print(friuts)
# 执行结果如下:
# >>> '橘子', '苹果', '香蕉', '火龙果', '鸭梨']
🌟 count() 函数
count() 函数的功能:返回列表(元组)中某个成员(元素)的个数
count() 函数的用法:inttype = list.count(item)
, item为想要查询的个数
count() 函数的注意事项:如果查询的成员(元素)不存在,则返回 0;列表只会检查完整元素是否存在需要计算的内容。
示例如下:
friuts = ['橘子', '香蕉', '火龙果', '香蕉', '苹果']
count = friuts.count('香蕉')
print('friuts 列表中香蕉出现的次数为 ' + str(count) + ' 次')
# 执行结果如下:
# >>> friuts 列表中香蕉出现的次数为 2 次
# 注意事项:如果查询的成员(元素)不存在,则返回 0;列表只会检查完整元素是否存在需要计算的内容。
friuts = ['橘子', '香蕉', '火龙果', '香蕉', '苹果']
count = friuts.count('香')
print('friuts 列表中\'香\'出现的次数为 ' + str(count) + ' 次')
# 执行结果如下:
# >>> friuts 列表中'香'出现的次数为 0 次
🌟 remove() 函数
remove() 函数的功能:删除列表中的某个元素
remove() 函数的用法:list_remove = list.remove(item)
, item为想要删除的元素
remove() 函数的注意事项:
- 如果删除的成员(元素)不存在,则会直接报错
- 如果被删除的元素有多个,只会删除第一个
- remove() 函数不会返回一个新的列表,而是在原有的列表中对成员(元素)执行删除动作
示例如下:
books = ['Python', 'Java', 'PHP']
books.remove('PHP')
print(books)
# 执行结果如下:
# >>> ['Python', 'Java']
✨ Python内置函数 del
del 函数的功能:将变量完全删除(即踢打内存管家将变量从内存中删除)
示例如下:
books = ['Python', 'Java', 'PHP']
del books
print(books)
# 执行结果如下:
# >>> NameError: name 'books' is not defined. Did you mean: 'bool'?
🌟 reverse() 函数
reverse() 函数的功能:对当前列表顺序的反转
reverse() 函数的用法: list = list.reverse()
, 无参数传递
示例如下:
books = ['Python', 'Java', 'PHP']
books.reverse()
print(books)
# 执行结果如下:
# >>> ['PHP', 'Java', 'Python']
🌟 sort() 函数
sort() 函数的功能:对当前列表按照一定的规律进行排序
sort() 函数的用法: list = list.sort(cmp=Node, key=Node, reverse=False)
- cmp —> 可选参数,制定排序方案的函数
- key —> 参数比较
- reverse —> 排序规则,reverse = True (降序);reverse = False (升序),升序是默认状态
- 这里的 cmp 和 key涉及到函数的知识点,后续的函数相关章节会详细介绍
sort() 函数的注意事项:列表中的元素类型必须相同,否则会报错,无法排序
示例如下:
books = ['Python', 'C', 'PHP', 'Go', 'C++', 'Java']
books.sort()
print(books)
# 执行结果如下:
# >>> ['C', 'C++', 'Go', 'Java', 'PHP', 'Python']
int_lists = [79, 6, 99, 46, 30]
int_lists.sort(reverse=True)
print(int_lists)
# 执行结果如下:
# >>> [99, 79, 46, 30, 6]
test_list = ['Hello', 666, 3.14, True]
test_list.sort()
print(test_list)
# 执行结果如下:
# >>> TypeError: '<' not supported between instances of 'int' and 'str'
🌟 clear() 函数
clear() 函数的功能:将当前列表的数据清空
clear() 函数的用法: list = list.clear()
, 该函数无参数,无返回值
示例如下:
int_list = [79, 6, 99, 46, 30]
int_list.clear()
print(int_list)
print(len(int_list))
# 执行结果如下:
# >>> []
# >>> 0
思考一个问题:当我们使用 clear() 函数 清空一个列表时,和重新命名一个空的列表,哪个更节省资源?
其实相对来说使用 clear() 函数更节省资源;当我们创造一个变量的时候,会占用一个内存地址,使用该变量之后该变量地址则会被内存管家清空。再次使用时,又会生成新的内存地址,这个过程也是需要消耗资源的,只是因为速度处理的比较快我们无法感知罢了。
🌟 copy() 函数
copy() 函数的功能:将当前列表复制一份新的列表,虽然新的列表虽与旧的列表的内容相同,但是内存地址不同
copy() 函数的用法:list = list.copy()
,该函数无参数,返回一个与旧列表一模一样的列表
copy() 函数与 2次赋值 的区别:
-
二次赋值的变量与原始变量共享相同的内存地址空间
-
copy() 函数创建的新列表与原始列表不是一个内存空间,新列表的变量值不因原列表变量的值的变更而变更
-
copy() 函数属于浅拷贝
示例如下:
old_list = [1, 2, 3, 4, 5]
new_list = old_list.copy()
print(new_list)
print("\'old_list\'内存地址为:" + str(id(old_list)), "\'new_list\'内存地址为:" + str(id(new_list)))
# 执行结果如下:
# >>> [1, 2, 3, 4, 5]
# >>> 'old_list'内存地址为:2175764462080 'new_list'内存地址为:2175767330496
copy() 函数与 2次赋值 的区别示例如下:
old_list = [1, 2, 3, 4, 5]
new_list_01 = old_list
new_list_02 = old_list.copy()
print("old_list的值为:", old_list, "内存地址为:", id(old_list))
print("new_list_01的值为:", new_list_01, "内存地址为:", id(new_list_01))
print("new_list_02的值为:", new_list_02, "内存地址为:", id(new_list_02))
old_list.append(6)
print("old_list 添加元素后的值为:", old_list, "old_list 添加元素后的内存地址为:", id(old_list))
print("new_list_01的值为:", new_list_01, "new_list_01的内存地址为:", id(new_list_01))
print("new_list_02的值为:", new_list_02, "new_list_02的内存地址为:", id(new_list_02))
# 执行结果如下:
# >>> old_list的值为: [1, 2, 3, 4, 5] 内存地址为: 140377425166080
# >>> new_list_01的值为: [1, 2, 3, 4, 5] 内存地址为: 140377425166080
# >>> new_list_02的值为: [1, 2, 3, 4, 5] 内存地址为: 140377425172608
# >>> old_list 添加元素后的值为: [1, 2, 3, 4, 5, 6] old_list 添加元素后的内存地址为: 140377425166080
# >>> new_list_01的值为: [1, 2, 3, 4, 5, 6] new_list_01的内存地址为: 140377425166080
# >>> new_list_02的值为: [1, 2, 3, 4, 5] new_list_02的内存地址为: 140377425172608
✨ 浅拷贝
什么是浅拷贝?
通俗的说,我们有一个列表 a,列表里的元素还是列表。当我们拷贝出新列表 b 后,无论是 a 还是 b 的内部的列表中的数据发生了变化后,相互之间都会受到影响。这就是浅拷贝。
浅拷贝示例如下:
old_list = [[1, 2, 3], [4, 5]]
new_list = old_list.copy()
old_list[1].append(6)
print(str(old_list), "--------," + str(new_list))
# 执行结果如下:
# >>> [[1, 2, 3], [4, 5, 6]] --------,[[1, 2, 3], [4, 5, 6]]
new_list[0].append(0)
print(str(old_list), "--------," + str(new_list))
# 执行结果如下:
# >>> [[1, 2, 3, 0], [4, 5, 6]] --------,[[1, 2, 3, 0], [4, 5, 6]]
✨ 深拷贝
什么是深拷贝?
深拷贝不仅对列表第一层进行了 copy ,对深层的数据也进行了 copy, 原始变量与新变量之间完全不共享数据,这就是深拷贝。
深拷贝示例如下:
old_list_deepcopy = [[1, 2, 4], [4, 5]]
new_list_deepcopy = copy.deepcopy(old_list_deepcopy)
old_list_deepcopy[1].append(6)
print(str(old_list_deepcopy), "--------," + str(new_list_deepcopy))
# 执行结果如下:
# >>> [[1, 2, 4], [4, 5, 6]] --------,[[1, 2, 4], [4, 5]]
new_list_deepcopy[0].append(0)
print(str(old_list_deepcopy), "--------," + str(new_list_deepcopy))
# 执行结果如下:
# >>> [[1, 2, 4], [4, 5, 6]] --------,[[1, 2, 4, 0], [4, 5]]
关于浅拷贝与深拷贝,我们再来看看对 数字类型 和 字符串类型又是怎样的,示例如下:
str_1 = "python"
print("str_1: ", str_1, id(str_1))
str_2 = str_1
print("str_2: ", str_2, id(str_2))
str_3 = copy.copy(str_2)
print("str_3: ", str_3, id(str_3))
str_4 = copy.deepcopy(str_1)
print("str_4: ", str_4, id(str_4))
# 执行结果如下:
# >>> str_1: python 140222883317104
# >>> str_2: python 140222883317104
# >>> str_3: python 140222883317104
# >>> str_4: python 140222883317104
可以看出,数字类型与字符串类型的浅拷贝与深拷贝是没有区别的,都是指向的同意内存地址,所以深拷贝与浅拷贝是没有意义的
🌟 extend() 函数
extend() 函数的功能:将其他列表或元组中的元素一次性的导入到当前列表中
extend() 函数的用法:list = list.extend(iterable)
,iterable 代表列表或元组,该函数无返回值。
示例如下:
students = ['Neo', 'Jack', 'Lily']
new_students = ('Lilei', 'Lily')
print(id(students))
# 执行结果如下:
# >>> 2032966498816
students.extend(new_students)
print(students)
print(id(students))
# 执行结果如下:
# >>> ['Neo', 'Jack', 'Lily', 'Lilei', 'Lily'] 相同的成员(元素)并不会覆盖掉
# >>> 2032966498816
⭐️ 小练习:完成列表合并功能
例如给出两个列表[1, 3, 5, 7, 9]和[2, 4, 6, 8, 10],最终合并为[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
list_1 = [1, 3, 5, 7, 9]
list_2 = [2, 4, 6, 8, 10]
list_1.extend(list_2)
print(list_1)
# 执行结果如下:
# >>> [1, 3, 5, 7, 9, 2, 4, 6, 8, 10]
list_1.sort()
print(list_1)
# 执行结果如下:
# >>> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
相关文章
- Python:将列表转为字符串的3种方法「建议收藏」
- 浙江新增python编程_9月起,浙江省八年级新增Python编程课,未来编程是处理大数据的手段…「建议收藏」
- python的random()函数用法_Python随机函数random用法示例
- python截图识别文字_Python文字截图识别OCR工具实例解析
- python–threading多线程总结[通俗易懂]
- Python列表(list)详解[通俗易懂]
- python判断linux中文件是否存在_Python判断文件是否存在的三种方法
- python之map函数
- Python: list列表的内置方法介绍
- Python编程 列表的常用方法
- 【说站】python中高斯模糊是什么
- 【说站】Python如何从列表中获取笛卡尔积
- python列表添加元素的方法_列表添加元素的三种方法
- python win32api sendmessage_Python win32api.SendMessage方法代码示例[通俗易懂]
- Python基础-2 数字、字符串和列表
- 【7】python_matplotlib 输出(保存)矢量图方法;画图时图例说明(legend)放到图像外侧;Python_matplotlib图例放在外侧保存时显示不完整问题解决
- Python列表常用的函数和方法(3)_Python自学第二十二节
- 软件测试|Python删除列表元素的3种方法,你都会吗?
- python中如何用列表+yield打破"内卷"的递归
- 在Python中反转二维列表(矩阵)与`zip`函数的使用
- Python list列表添加元素的3种方法
- Python list列表删除元素(4种方法)
- python去除列表里的重复元素的集中方法汇总详解编程语言
- Linux下安装Python的指南(linux下安装python)
- 使用Python执行Linux命令的方法(python调用linux命令)
- Linux与Python:开拓者的新时代(linux和python)
- Linux中如何离开Python环境(linux怎么退出python)
- python解决字典中的值是列表问题的方法
- Python中字典(dict)和列表(list)的排序方法实例
- Python中无限元素列表的实现方法