文章目录

  • 一. zip()
  • 二. locals() 和 globals()
  • 三. sorted()
  • 四. filter() 和 map()

一. zip()

作用:将多个可迭代的内容进行合并
需求:已知有3个列表,按照相同索引为一组的原则,将其打印到一个列表中。

lst1 = ["赵本山","范伟","苏有朋"]
lst2 = [40, 36, 34]
lst3 = ["刘老根", "耳朵大有福", "教主"]

例如,赵本山,40,刘老根都是3个列表的索引为0的元素,这三个元素就打印在一起。

方法一:
手写算法如下:

lst1 = ["赵本山","范伟","苏有朋"]
lst2 = [40, 36, 34]
lst3 = ["刘老根", "耳朵大有福", "教主"]# 创建一个空列表,接收结果
result = []# 用for循环遍历所有元素
for i in range(len(lst1)):# 接收lst1的元素first = lst1[i]# 接收lst2的元素second = lst2[i]# 接收lst3的元素third = lst3[i]# 将结果依次累加赋值给空列表result.append((first,second,third))
# 打印结果
print(result)

代码执行结果如下:

方法二:

# 使用zip()内置函数
result = zip(lst1,lst2,lst3)
# 遍历结果
for item in result:print(item)

代码执行结果如下:

如果要将最终结果放在同一列表中,代码如下:

# 将结果放在列表中
result = zip(lst1,lst2,lst3)
lst = list(result)
print(lst)

最终执行结果与方法一一样。

二. locals() 和 globals()

当locals()写在全局作用域范围内,此时看到的就是全局作用域中的内容。
执行下面代码:

lst1 = ["赵本山","范伟","苏有朋"]
lst2 = [40, 36, 34]
lst3 = ["刘老根", "耳朵大有福", "教主"]a = 100
print(locals())

得到结果:

{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x0000015768AE7C70>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'D:\\python\\py_work_01\\main.py', '__cached__': None, 'lst1': ['赵本山', '范伟', '苏有朋'], 'lst2': [40, 36, 34], 'lst3': ['刘老根', '耳朵大有福', '教主'], 'a': 100}

我们只看最后的:‘a':100表示此时在全局作用域中

然后构造一个函数,将其放在函数中执行代码:

def fun():a = 10print(locals())
fun()

执行代码后的结果是:

表示此时locals在局部作用域范围内,看到的是局部作用域中的内容。

与之相对应的是,无论写在哪里,globals都显示全局作用域的内容。

# 在全局中写入
a = 100
print(globals())# 在函数内写入
def fun():a = 10print(globals())
fun()

执行结果如下:

{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x0000022962377C70>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'D:\\python\\py_work_01\\main.py', '__cached__': None, 'lst1': ['赵本山', '范伟', '苏有朋'], 'lst2': [40, 36, 34], 'lst3': ['刘老根', '耳朵大有福', '教主'], 'a': 100}
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x0000022962377C70>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'D:\\python\\py_work_01\\main.py', '__cached__': None, 'lst1': ['赵本山', '范伟', '苏有朋'], 'lst2': [40, 36, 34], 'lst3': ['刘老根', '耳朵大有福', '教主'], 'a': 100, 'fun': <function fun at 0x00000229623D3E20>}

三. sorted()

首先简单使用sorted()函数,将列表中的一组数据从大到小排序

lst = [10, 99, 3, 200, 54, 102]
# 如果不加reverse=True,那么默认reverse=False,即从小到大排序
ret = sorted(lst,reverse=True)
print(ret)

但现实情况是,我们排序的数据不一定是数字,需要自定义排序规则。

lst = ["卡卡罗特","比鲁斯","奥斯特洛夫斯基","维斯","宇宙无敌超级暴龙战士"]# 构建函数,自定义排序规则
def func(item):# 根据每个元素的长度作为返回值,进行排序return len(item)# 使用排序规则,func不能加括号,否则就是调用函数
ret = sorted(lst,key=func)
# 输出结果
print(ret)

此外,我们可以用lambda代替函数func,将上述的第三、五、八行换成下面两行

func = lambda x:len(x)
ret = sorted(lst,key=func)

甚至,上面的两行最终又精简为一行总共三行代码:

lst = ["卡卡罗特","比鲁斯","奥斯特洛夫斯基","维斯","宇宙无敌超级暴龙战士"]
ret = sorted(lst,key=lambda x:len(x))
print(ret)

最后自定义一个列表,根据年龄和工资进行排序

lst = [{"name":"李四","age":39, "salary":3000},{"name":"李非","age":19, "salary":30000},{"name":"李大嘴","age":30, "salary":8000},{"name":"李明","age":20, "salary":300},{"name":"李云龙","age":35, "salary":900},
]# 根据年龄从小到大排序
ret1 = sorted(lst, key=lambda x:x["age"])
# 根据工资从高到低排序
ret2 = sorted(lst, key=lambda x:x["salary"], reverse=True)
print(ret1,ret2)

四. filter() 和 map()

filter()的作用是筛选

# 给出列表数据
lst = ["周星驰", "周润发", "张三丰", "周伯通", "王老七", "灭绝师太"]
# 筛选出姓周的人
ret1 = filter(lambda x:x.startswith("周"),lst)
# 由于是生成器,所以不能直接打印结果,可以转化成列表打印出来
print(list(ret1))
# 筛选出不姓周的人
ret2 = filter(lambda x: not x.startswith("周"),lst)
print(list(ret2))

map()的作用是映射

给出一组数据,要求得出每个数据的三次方结果,并打印出来

方法一:使用循环遍历

lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
ret = [item ** 3 for item in lst]
print(ret)

方法二:使用map()内置函数

lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
ret = map(lambda x:x**3, lst)
print(list(ret))

此处需要注意的是,与zip() filter()相同,最终得到的都是生成器,需要将其转换成列表才能输出结果。

python-(5-3)内置函数-zip locals globals sorted filter map相关推荐

  1. Python标准库 内置函数exec object globals locals

    本函数是执行一段语句或函数.参数object是一个字符串的语句或者一个编译过的语句的对象名称.参数globals是全局命名空间,用来指定执行语句时可以访问的全局命名空间:参数locals是局部命名空间 ...

  2. python提供的内置函数有哪些_python内置函数介绍

    内置函数,一般都是因为使用频率比较频繁,所以通过内置函数的形式提供出来.对内置函数通过分类分析,基本的数据操作有数学运算.逻辑操作.集合操作.字符串操作等. 说起我正式了解内置函数之前,接触到的是la ...

  3. Python两个内置函数——locals 和globals

    python作用域 http://tgstdj.blog.163.com/blog/static/748200402012419114428813/ 有两种类型的作用域--类的变量和对象的变量. 类的 ...

  4. python 两个内置函数——locals 和globals(名字空间)批量以自定义变量名创建对象

    文章目录 locals 和globals(名字空间)简介 1.局部变量函数locals例子(locals 返回一个名字/值对的字典) 批量创建对象 示例1 示例2 函数内 类内 2.全局变量函数glo ...

  5. python之路——内置函数和匿名函数

    楔子 在讲新知识之前,我们先来复习复习函数的基础知识. 问:函数怎么调用? 函数名() 如果你们这么说...那你们就对了!好了记住这个事儿别给忘记了,咱们继续谈下一话题... 来你们在自己的环境里打印 ...

  6. 初学者python笔记(内置函数_2)

    这篇初学者笔记是接着上一篇初学者python笔记(内置函数_1)的.同样都是介绍Python中那些常用内置函数的. max()和min()的高级用法 我们都知道,max():取最大值,min():取最 ...

  7. [转载] (三)Python关键字和内置函数

    参考链接: Python中的数学函数 4(特殊函数和常量) 一.Python的关键字 和其他语言一样,关键字有特殊含义,并且关键字不能作为变量名.函数名.类名等标识符. 快速查看关键字的方法除了上cs ...

  8. Python学习(14)--内置函数

    Python学习(14)--内置函数 1.Python内置函数 在Python中有很多的内置函数供我们调用,熟练的使用这些内置函数可以让编写代码时事半功倍,所谓内置函数就是那些Python已经预定义并 ...

  9. python 3 常用内置函数

    一.简介 如其他计算机语言一般, python 也有自己的内置函数,本文会一一实现python的所有内置函数,并注明一些需注意的地方 二.内置函数一览 三.实现 目录 (1)dir() (2)help ...

最新文章

  1. 定义const变量是不可以赋值_定义好 const 变量
  2. rocketMq指定broker ip地址,适合解决云主机部署问题
  3. MATLAB红色分量图如何合成,如何修改一张图片中红色分量的值?
  4. MATLAB在通信系统仿真中的注意
  5. java http 302重定向_Java 纯HTTP请求 禁止302自动重定向
  6. 超分辨率技术,随机噪声
  7. 如何将图片一键重命名按顺序_如何“智慧”地管理文件?(一次付出,终身受益)...
  8. crx mouse使用的插件常用热门手势
  9. 本地 Git 文件夹显示绿色标识
  10. js禁止鼠标右键及F12禁止查看源代码
  11. AD-FMCOMMS3 使用matlab+Linux/No-OS传输QPSK信号
  12. 虚拟化与网络存储技术:虚拟化技术、Qemu-KVM
  13. 2020年机修钳工(技师)考试题库及机修钳工(技师)免费试题
  14. 论文页眉设置 奇偶页页眉均为章序及章标题 论文按章节设置页眉
  15. ROS入门21讲笔记(一)基本概念
  16. windows 2008虚拟机的安装方法
  17. Direct3D基础——Direct3D概述
  18. 深圳是“物联网之城”|草根逆袭之地
  19. 在html中怎么插入动态图片,如何在gif中插入图片 动态图片某1帧插入图片并控制显示时间|动态图片中插入图片...
  20. 《悲惨世界》经典绝美英文独白

热门文章

  1. java 求导函数_面向对象编程 —— java实现函数求导
  2. 淘宝双11数据分析与预测汇总
  3. 小波变换入门(超清晰的思路)
  4. 数据中心的税收优惠并不万能
  5. 有关springboot Unauthorized 问题
  6. odoo15 controler get方法返回汉字显示不了
  7. springboot整合BeetSQL
  8. 我的三周年创作纪念日
  9. 省高企和国家高企有什么不一样吗?
  10. 这四种食物帮你抗雾霾