首页 > 编程语言 >Python疑难杂症(13)---Python的几个比较难理解的内置函数,包括range、zip、map、lambda、filter、exec、compile、globals等

Python疑难杂症(13)---Python的几个比较难理解的内置函数,包括range、zip、map、lambda、filter、exec、compile、globals等

时间:2024-03-16 16:30:30浏览次数:34  
标签:map 13 函数 zip Python numbers print 迭代

1、range()

range(start=0, stop[, step=1]) 构造器的参数必须为整数(可以是内置的 int 或任何实现了 __index__() 特殊方法的对象)。生成一个startstop的数组,左闭右开, 类型表示不可变的数字序列,通常用于在 for 循环中循环指定的次数。

list(range(6))

[0, 1, 2, 3, 4, 5]

list(range(1, 10))

[1, 2, 3, 4, 5, 6, 7, 8, 9]

list(range(0, 15, 5))

[0, 5, 10,]

list(range(0, 10, 3))

[0, 3, 6, 9]

2、zip()

zip() 将多个迭代对象聚合在一个元组中,然后返回它。zip 可以接受任何类型的可迭代对象,例如文件、列表、元组、字典、集合等。

语法:zip(iterable, ...)

numbers = [1,2,3,4]

characters = ['A','B','C','D']

zipped = zip(numbers,characters)

print(zipped) # <zip object at 0x000001F8D8B8B848>

print(list(zipped)) # [(1, 'A'), (2, 'B'), (3, 'C'), (4, 'D')]

print(tuple(zipped)) # (1, 'A'), (2, 'B'), (3, 'C'), (4, 'D')]

zipped_2 = zip(numbers,characters)

n , c = zip(*zipped_2) 

print(n) # (1, 2, 3, 4)

print(c) # ('A', 'B', 'C', 'D')

3、map()

map() 函数接收两个参数:函数和迭代对象,并返回一个迭代器,迭代器是函数作用在输入的迭代对象上。

语法:map(func, iterable)

# 求立方

def cube(n):

     return n*n*n

numbers = [1,2,3,4,5]

for i in map(cube,numbers):

    print(i) # 1 8 27 64 125

#四舍五入

numbers = [1.2324,5.6443,9.4524,6.322]

for i in map(round,numbers):

    print(i) # 1 5 10 6

4、 lambda()

Lambda 函数也称为匿名函数,因为它没有函数体并且不需要 def 关键字来定义。Lambda 函数可以有任意数量的参数,但其中只能有一个表达式。表达式计算并返回。它没有返回语句。

语法:lambda [arg1 [,arg2,.....argn]]:expression

#和上个例子一样的效果

cube = lambda x: x*x*x

numbers = [1,2,3,4,5]

for i in map(cube,numbers):

print(i) 输出: 1 8 27 64 125

#便捷用法:

numbers = [1,2,3,4,5]

for i in map(lambda x: x*x*x,numbers):

    print(i) # 1 8 27 64 125

5、filter()

filter(function, iterable ) 函数接收两个参数:函数和迭代器,并返回一个迭代器,迭代器是函数作用在输入的迭代对象上为真的值。区别于 map() 函数, filter() 函数接收的函数必须返回 True 或 False, 并且不是返回函数值,而是返回真值位置的输入值。

语法:filter(func, iterable)

numbers = [1,2,3,4,5,6,7,8,9,10]

check_even = lambda x: x%2 == 0 # 判偶数

for i in filter(check_even,numbers):

print(i) # 2 4 6 8 10

6、exec()

该函数用于执行字符串或代码对象,可以动态执行用户输入的表达式、动态执行动态生成的代码块等。但是需要注意安全风险,应该避免执行不可信的代码;因为执行了不安全或未经验证的代码会引起安全隐患, 需要谨慎使用。

示例如下:

exec('print("Hello, World!")')

7、 compile()

用于将字符串形式的源代码编译为代码对象或 AST(抽象语法树)对象。常用于将字符串形式的源代码编译为可执行的代码对象,动态创建并执行代码。例如在动态生成代码时,可以使用 compile() 将字符串编译为可执行的代码对象。

示例如下:

code1 = 'print("Hello, World!")'

com_code = compile(code1, '<string>', 'exec')

exec(com_code)

8、 globals()

我们知道全局变量在局部作用域中只能访问,无法修改。这个函数返回实现当前模块命名空间的字典。对于函数内的代码,这是在定义函数时设置的,无论函数在哪里被调用都保持不变。当然也可以单独回去某一个全局变量的值。

示例如下:

global_var = 10

def test_function():

    local_var = 20

    print(globals()['global_var'])

test_function()

9、 locals()

返回当前局部符号表的字典,可以用于获取局部变量的值或在局部作用域中执行代码。常用于动态获取局部变量的值,或者在函数内部访问局部变量。

示例如下:

def test_function():

    local_var = 20

    print(locals())

test_function()

只显示函数内的local_var这个变量:{'local_var': 20}

欢迎评论、交流、点赞、收藏。

标签:map,13,函数,zip,Python,numbers,print,迭代
From: https://blog.csdn.net/m0_59917021/article/details/136742252

相关文章

  • Python 潮流周刊第 42 期(摘要)+ 赠书《流畅的Python》6本
    本周刊由Python猫出品,精心筛选国内外的250+信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进Python技术,并增长职业和副业的收入。周刊全文:https://pythoncat.top/posts/2024-03-16-weekly特别提醒:《流畅的Py......
  • Python讲透视原理(三) -- 双灭点透视(修正版)
    上一篇留了一个问题,最初立方体不符合透视原理,只是不影响讲灭点。后来强迫症一范,思考一下还是解决了吧,否则如鲠在喉。为什么不在上一篇上直接修改,犯错也是成长和学习的一部分,它且留当纪念自己走的弯路。这比较符合PDCA和敏捷思想,先做再改进,软件工程最重要的思想。如果一开始奔......
  • python接口自动化测试 —— unittest框架suite、runner详细使用
    testsuite测试套件,理解成测试用例集一系列的测试用例,或测试套件,理解成测试用例的集合和测试套件的集合当运行测试套件时,则运行里面添加的所有测试用例testrunner测试运行器用于执行和输出结果的组件testsuite、testrunner基础使用单元测试类1#创建单元测试类......
  • 计算机二级(Python)真题讲解每日一题:《绘制雪花》
    在横线处填写代码,完成如下功能‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬利......
  • Python之Web开发中级教程----配置数据库
    Python之Web开发中级教程----配置数据库在settings.py中保存了数据库的连接配置信息,Django默认初始配置使用sqlite数据库。DATABASES={   'default':{       'ENGINE':'django.db.backends.sqlite3',       'NAME':os.path.join(BASE_DIR,'db.s......
  • 优雅Python,无时无刻不精致
    精致1今日撸码出现报错,根据语法提示,引起这种错误是由于混合使用Tab键和空格键造成的,出现这种混合使用最常见的就是:部分代码从其他地方粘贴代码造成此种错误;另外,编写代码过程中进行语句缩进时出现Tab键和空格键混用的情况造成。精致方案:1)养成使用Tab键的习惯,毕竟一个Tab键......
  • 首师大附中集训D4日报(20231213)-总结部分
    现在是22:19,宾馆大堂,我刚打开电脑今天的讲题,其实讲的挺失败的,我也没做ppt(这毒瘤题ppt好像起不到太大作用,把维护的数组都贴上去吗?),然后讲的乱七八糟,但是总体而言是有收获的,不只是年轻人的第一道ynoi,这也是我能够完全理解并且部分自主完成的第一个黑题,虽然讲的还欠火候,但是我至少捋出......
  • 使用Anaconda创建Python指定版本的虚拟环境
    由于工作的需要和学习的需要,需要创建不同Python版本的虚拟环境。比如zdppy的框架,主要支持的是Python3.8的版本,但是工作中FastAPI主要使用的是3.11的版本,所以本地需要两套Python环境。决定使用Anaconda虚拟环境管理的能力,并记录下。首先,下载:https://www.anaconda.com/down......
  • 一个现成的用python写的项目, 有GUI,https://github.com/mustafamerttunali/deep-learni
    安装该项目ENV:Win11Anaconda 1.安装Python3.7, 在Anaconda新建一个python3.7环境2.安装VC++buildtool14.0 以上版本,我从下面这个link下载的最新版是17.6.4https://visualstudio.microsoft.com/visual-cpp-build-tools/否则会遇到 3.修改一下requir......
  • python调用c语言API
    python调用C语言API,一般使用内置的ctypes库.但是这个库用起来不那么方便,主要是需要进行函数和数据结构的包装.如下所示:#结构定义classCOORD(Structure):"""COORDstructure"""_fields_=[("X",SHORT),("Y",SHORT)]#函数定义UpdateP......