Python3 无序学习记录(一)

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值