1.深拷贝和浅拷贝
原文地址:python深拷贝浅拷贝区别_只会git clone的程序员的博客-CSDN博客
创建列表 a = [100, 200,[300, 400]]
浅拷贝 | 深拷贝 | |
代码实现 | b = copy.copy(a) | b = copy.deepcopy(b) |
图示 | ||
原理解释 | 是指拷贝对原始对象元素的引用,生成新对象,但是引用原对象内容。 | 是指完全拷贝原始对象,而且产生的对象是新的,并且不受其他引用对象的操作影响。 |
2. enumerate() 函数使用
原文地址:Python的enumerate函数_Python 学习者的博客-CSDN博客_enumerate python
enumerate() 函数格式:
enumerate(iterable, start=0)
基本功能——用来遍历一个集合对象,它在遍历的同时还可以得到当前元素的索引位置,示例如下:
names = ["Krys","Bob","Aily"]
for index,value in enumerate(names):
print(f'{index}: {value}')
输出结果:
2: Krys
3: Bob
4: Aily
其他功能——修改起始索引,即由默认从0开始修改为从1开始,示例如下:
names = ["Krys","Bob","Aily"]
for index,value in enumerate(names,2):
print(f'{index}: {value}')
输出结果:
0: Krys
1: Bob
2: Aily
enumerate() 函数背后是如何工作的?
通过Python迭代器来实现,由于每个元素的索引是懒加载的(一个接一个,用的时候生成),这使得内存使用量很低并且保持这个结构运行很快。
names = ["Krys","Bob","Aily"]
enumerate(names)
输出结果,可通过list() 展开该迭代器。
<enumerate at 0x2507d3cdd40>
总结:
- 作为python的内置函数之一,可以充分利用它通过循环迭代自动生成的索引变量。
- 索引值默认从0开始,也可将其设置为任何整数。
- enumerate() 函数是从2.3版本开始被添加到Python中的
- 可以帮助编写出更加Pythonic和地道的循环结构,避免使用range()方法手动生成索引。
3. map() 函数使用
原文地址:python中的map函数_普通网友的博客-CSDN博客_python中map
map() 函数格式:
map(func, *iterables)
基本功能——第一个参数接受一个函数名,后面的参数接受一个或多个可迭代的序列,返回的是一个新的集合。可以理解为把函数func依次作用在可迭代序列的每一个元素上,得到一个新的序列并返回,示例如下:
list(map(lambda x, y : (x**y,x+y),[2,4,6],[3,2,1]))
输出结果:
[(8, 5), (16, 6), (6, 7)]
其他功能——实现类型转换
# 将元组转换为 list
map(int,(1,2,3))
# 将字符串转换为 list
map(int,'1234')
# 提取字典中的key,并将结果放在list中
map(int,{1:2,2:3,3:4})
注意
- map不改变原list,而是返回一个新list。
- 在python3中,func必须是一个可调用的函数,设置为None则报错,在python2中可运行,此时map() 函数的作用类似于zip(),将列表位置相同的元素归并到一个元组中。