Python3 无序学习记录(一)

1.深拷贝和浅拷贝

原文地址:python深拷贝浅拷贝区别_只会git clone的程序员的博客-CSDN博客

创建列表 a = [100, 200,[300, 400]]

浅拷贝 深拷贝
代码实现 b = copy.copy(a) b = copy.deepcopy(b)
图示 Python3 无序学习记录(一)_第1张图片 Python3 无序学习记录(一)_第2张图片
原理解释 是指拷贝对原始对象元素的引用,生成新对象,但是引用原对象内容。 是指完全拷贝原始对象,而且产生的对象是新的,并且不受其他引用对象的操作影响。


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() 展开该迭代器。

总结:

  • 作为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(),将列表位置相同的元素归并到一个元组中。

你可能感兴趣的:(python)