python编程中简洁优雅的推导式示例详解
作者:曾亲桂林 发布时间:2021-02-12 01:43:56
标签: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
0
投稿
猜你喜欢
- 内容摘要:本文是一篇实例讲解的文章。作为一个普通的程序员,我深知,一个优秀的例程,对于正在学习编程的人是多么的有帮助。本文中使用的例程,是一
- 前段时间在开发雨哲树网程序的时候,遇到需要转换地址中的参数,需要用到简单可逆运算的加密功能。在网上找了很多都不理想。因为我需要的这个可逆运算
- 当Python执行import语句时,它会在一些路径中搜索Python模块和扩展模块。可以通过sys.path查看这些路径,比如:>&
- tensorflow里面给出了一个函数用来读取图像,不过得到的结果是最原始的图像,是咩有经过解码的图像,这个函数为tf.gfile.Fast
- 前言:泛型是静态类型语言的基本特征,允许将类型作为参数传递给另一个类型、函数、或者其他结构。TypeScript 支持泛型作为将类型安全引入
- 在数据库中,字符型的数据是最多的,可以占到整个数据库的80%以上。为此正确处理字符型的数据,对于提高数据库的性能有很大的作用。在字符型数据中
- 这篇文章主要介绍了Oracle数据库到SQL Server数据库主键的迁移过程,具体内容请参考下文。由于项目需要要将以前Oracle的数据库
- 《色彩解答》系列之一 色彩层次这次我们将深入进去了解一下众多色彩在一起之后所存在的“比例”关系。我们在使用色彩的时候不可能把所有的色彩都做得
- 本文实例讲述了Python单向链表和双向链表原理与用法。分享给大家供大家参考,具体如下:链表是一种数据结构,链表在循环遍历的时候效率不高,但
- var sss=(String.fromCharCode(127)); var xmlhttp =
- 从4年之前什么都不知道,到现在对代码的一网情深,感谢无忧的兄弟姐妹的帮助,感谢无忧给我们提供了这么好的交流平台。现将最近几天捣鼓的asp封装
- 本文实例讲述了php中常量DIRECTORY_SEPARATOR用法。分享给大家供大家参考。具体如下:DIRECTORY_SEPARATOR
- 大家都知道连续的英文或数字能是容器被撑大,不能根据容器的大小自动换行,网页设计初学者可能不知道怎么处理,下面是CSS如何将他们换行的方法!对
- 作者:Dmitry @ Usability Post 版权所有 Copyright.译者:明月星光 @ UCD翻译小组原文:ht
- 用wdcp官方提供的脚本安装lnamp环境,安装请参考:http://www.wdlinux.cn/bbs/thread-6292-1-1.
- 最近的项目涉及到很多表单的制作,特别是复选框(checkbox)和单选框(radio)。但是在前端开发过程中发现,单(复)选框和它们后面的提
- 首先添加一个splice函数:splice:该方法的作用就是从数组中删除一个元素array.splice(index,count,value
- “深入认识Python内建类型”这部分的内容会从源码角度为大家介绍Python中各种常用的内建类型。
- 请按步骤进行,未进行前面的步骤时,请不要做后面的步骤,以免损坏你的数据库.一般不建议做第4,6两步,第4步不安全,有可能损坏数据库或丢失数据
- INI是微软Windows操作系统中的文件扩展名。这些字母表示初始化。正如该术语所表示的,INI文件被用来对操作系统或特定程序初始化或进行参