Python简洁优雅的推导式示例详解
作者:曾亲桂林 发布时间:2022-06-26 11:52:20
前言
推导式是从一个或者多个迭代器快速创建序列的一种方法。它可以将循环和条件判断结合,从而避免冗长的代码。推导式是典型的 Python 风格
Python语言有一种独特的推导式语法,相当于语法糖的存在,可以帮助你在某些场合写出较为精简酷炫的代码。但没有它,也不会有太多影响。Python语言有几种不同类型的推导式。
1. 列表推导式
列表推导式是一种快速生成列表的方式。其形式是用方括号括起来的一段语句,如下例子所示:
lis = [x * x for x in range(1, 10)]
print(lis)
输出
[1, 4, 9, 16, 25, 36, 49, 64, 81]
列表推导式要这么理解,首先执行for循环,对于每一个x,代入x*x中进行运算,将结果逐一添加到一个新列表内,循环结束,得到最终列表。它相当于下面的代码:
lis = []
for i in range(1, 10):
lis.append(i*i)
print(lis)
输出
[1, 4, 9, 16, 25, 36, 49, 64, 81]
列表推导式为我们提供了一种在一行内实现较为复杂逻辑的生成列表的方法。其核心语法是用中括号[]将生成逻辑封装起来。
列表推导式有多重用法:
增加条件语句
lis = [x * x for x in range(1, 11) if x % 2 == 0]
输出
[4, 16, 36, 64, 100]
多重循环
lis = [a + b for a in '123' for b in 'abc']
输出
['1a', '1b', '1c', '2a', '2b', '2c', '3a', '3b', '3c']
更多用法
dic = {"name": "mumu", "age": "18"}
a = [k+":"+v for k, v in dic.items()]
print(a) # ['name:mumu', 'age:18']
2. 字典推导式
dic = {x: x**2 for x in (2, 4, 6)}
print(dic)
print(type(dic))
注意:x: x**2的写法,中间的冒号,表示左边的key右边的value。
输出:
{2: 4, 4: 16, 6: 36}
<class 'dict'>
3. 集合推导式
a = {x for x in 'abracadabra' if x not in 'abc'}
print(a)
print(type(a))
输出:
{'r', 'd'}
<class 'set'>
4. 元组推导式?
没有元组推导式。
tup = (x for x in range(9))
print(tup)
print(type(tup))
<generator object <genexpr> at 0x0000013DB865AA40>
<class 'generator'>
要通过类似方法生成元组,需要显式调用元组的类型转换函数tuple(),如下所示:
tup = tuple(x for x in range(9))
print(tup)
print(type(tup))
输出:
(0, 1, 2, 3, 4, 5, 6, 7, 8)
<class 'tuple'>
总结
来源:https://blog.csdn.net/bigzql/article/details/115650370
猜你喜欢
- 下面展示了图像的加密和解密过程(左边是输入图像,中间是加密后的结果,右边是解密后的图像):1、加密算法要求(1)加密算法必须是可逆的,拥有配
- 在开始聊我在阿里四个月的网页推广设计之前,我想先来说说我对平面设计和网页设计的认识。它们之间的交集。它们都是集艺术创作、电脑技术和数字技术于
- asp如何实现当前月份距离以前某个时间的月份数 如今天是2011年1月份,我想知道离2010年3月,计算这中间一共是几个月 最佳答案 <
- 在统计学和数据分析领域中,我们常常需要比较两个或多个样本数据之间的差异。而带置信区间的折线图则是一种直观且常用的展示数据差异的方式。在这篇文
- 以下公共方法支持列表,元组,字典,字符串。内置函数Python 包含了以下内置函数:函数描述备注len(item)计算容器中元素个数del(
- Delphi连接MySQL真麻烦,研究了一天,从网上找了无数文章,下载了无数插件都没解决。最后返璞归真,老老实实用ADO来连接,发现也不是很
- 数据结构:通俗点说,就是储存大量数据的容器。这里主要介绍Python的4种基本数据结构:列表、字典、元组、集合。格式如下:列表:list =
- 今天用实验室的pycharm运行程序的时候发现出现了已安装的模块无法导入的情况,但实际上这个模块我已经在notebook中使用多次了,所以不
- 记录一下安装win10+GeForce GTX1060+CUDA 9.0+cuDNN7.3+tensorflow-gpu 1.12.0+py
- interfaceGo语言里面设计最精妙的应该算interface,它让面向对象,内容组织实现非常的方便,当你看完这一章,你就会被inter
- 此处收集的是一些夺人心魄的创意广告牌,巧妙的构思十分值得大家观瞻.......超人归来 superman returnsNespressos
- 1.相信大家,在经过前面的初步学习之后,相信大家也想要有一个舒适的编程环境了。接下来将交给大家一个简单的配置环境Anaconda + VSC
- PDO::errorCodePDO::errorCode — 获取跟数据库句柄上一次操作相关的 SQLSTATE(PHP 5 >= 5
- 准备正常情况下,创建class的实例后,可以给该实例绑定任何属性和方法,这就是动态语言的灵活性。首先定义一个classclass A(obj
- 代码如下:<% class MyClass Dim var '公共变量必须使
- 根据"客服果果"的"十几行的超简日历组件"http://bbs.51js.com/viewthrea
- 先看一个需求from collections import defaultdict"""需求: 统计user_
- 最近发现数据库服务器压力很大,CPU经常达到100%。查看进程,发现有大量的sp_cursorclose;1进程信息。网上查了下,出现sp_
- 另外他们列出的这些区别有些是蛮有意义的,有些可能由于他们本人的MySQL DBA的身份,对Oracle的理解有些偏差,有些则有凑数的嫌疑.
- 矛盾出来了,像我们这些小作坊,基本都是设计布局一人搞定。甚至还有加后台程序的。假设设计的时候考虑布局了,我们都有这个能力进行调整。但像大公司