python推导式的使用方法实例
作者:- 打小就隔路à 发布时间:2021-03-13 09:38:25
前言
推导式提供了更简洁高效的方法来生成序列而又不失代码的可读性。
定义: 推导式是 Python 里很有用的一个特性,它可以用一行代码就可以创建一个新的序列(比如:列表,集合,字典等等)。通过这个性能,不仅可以少写很多代码,而且性能上也更快。
Python 里有四种推导式:
列表推导式(List Comprehensions)
字典推导式(Dictionary Comprehensions)
集合推导式(Set Comprehensions)
生成器推导式(Generator Comprehensions)
一、列表推导式(List Comprehensions)
假如你有一个列表,你想去掉该列表中的所有负数,那通常的做法使用 for 循环
numbers=[1,-2,3,-4,5]
new_nums=[]
for num in numbers:
if num>0:
new_nums.append(num)
print(new_nums)
输出结果:
但如果我们用列表推导式来实现,那么这个过程就短得多,只需要一行代码:
numbers=[1,-2,3,-4,5]
new_nums=[num for num in numbers if num>0]
print(new_nums)
输出结果同上。
列表推导式的结构:
output_list = [expression for var in input_list if condition]
这里的 if condition 语句并不是必须有的。
二、字典推导式(Dictionary Comprehensions)
跟列表推导式一样,通过同样方式生成字典的方法,就是字典推导式。
假如你想从一个全是数字的列表来创建一个字典,列表里的数字作为 key, 数字的的字符串值作为 value, 然后再某个限制条件,最终获得你想要的字典数据:
nums=[1,2,3,4,5,6,7,8]
dict={}
for num in nums:
if num %2 == 0:
dict[num] = str(num)
print(dict)
输出结果:
如果我们使用字典推导式,就会简洁的多:
nums=[1,2,3,4,5,6,7,8]
dict={num:str(num) for num in nums if num % 2 == 0}
print(dict)
输出结果同上。
字典推导式的模板:
{key:value for (key,value) in dict if key,value satisfy condition}
三、集合推导式(Set Comprehensions)
集合推导式跟列表推导式差不多。就比如我们要把一个全是数字的列表中的奇数组成一个集合,用 for 循环的话:
numbers=[1,2,3,4,5,6,7,8]
filtered_nums=set()
for num in numbers:
if num %2 == 0:
filtered_nums.add(num)
print(filtered_nums)
输出结果:
如果我们使用集合表达式来表示:
numbers=[1,2,3,4,5,6,7,8]
filtered_nums={num for num in numbers if num %2 == 0}
print(filtered_nums)
输出结果同上。
注意: 集合推导式除了是使用 {} 外,其他形式都跟列表推导式一样。
四、生成器推导式(Generator Comprehensions)
生成器推导式(或叫生成器表达式),其结构也跟列表表达式相似。
例如我们将数字列表中各项平方运算并排除奇数项:
def square_even(numbers):
for number in numbers:
if number % 2 == 0:
yield (number * number)
numbers=[1,2,3,4,5,6]
square_numbers=square_even(numbers)
for number in square_numbers:
print(number)
输出结果:
使用生成器推导式显示为:
numbers=[1,2,3,4,5,6]
square_numbers=(num *num for num in numbers if num % 2 ==0)
for number in square_numbers:
print(number)
输出结果同上。
注意: 生成器推导式是使用 () ,其他基本结构跟列表推导式一样。
总结
来源:https://blog.csdn.net/weixin_54787921/article/details/114106536
猜你喜欢
- 一、ASPJPEG文字水印对图片描边:程序代码: <% Set Jpeg = Se
- 今年年初之时,微软发布了一个针对ActiveX控件的补丁,安装此补丁后的IE6中,当ActiveX控件获得焦点时,IE自动为其套上一个虚线矩
- 神奇创意相框! 是的,主要利用position的relative, absolute, z-index属性。结合Photo Frame(相框
- [编者注:]提起数据库,第一个想到的公司,一般都会是Oracle(即甲骨文公司)。Oracle在数据库领域一直处于领先地位。Oracle关系
- '************************************* '检测是否只包含英文和数
- 在如今的Web设计中,图片的应用是必不可少的,为了更好地设计网站效果,大体积的图片被越来越多地应用到Web设计中来,所以,更好地优化图片文件
- 工具:Pycharm,Django1.11.9.1.下载django_admin_bootstrappedpip install djang
- Python的绘图库也允许用户创建优雅的图形,本章给大家介绍的是关于ggplot绘制画图的技巧,ggplot2建立在grid系统上,这个系统
- 前言通常执行 python 程序要有相应的 Python 环境,但某些特定场景下,我们可能并不愿意这么麻烦的去配置这些环境(比如将写好的脚本
- 使用picasa的时候,注意到它首先是显示模糊的图片,然后图片突然变得清晰,这样做有一定的好处——picasa的图片翻页是用javascri
- 本文实例为大家分享了python实现文件批量重命名的具体代码,供大家参考,具体内容如下代码:# -*- coding:utf-8 -*-im
- ACCESS数据库中Field对象的caption属性(也就是标题)是用来设置数据字段的标题,在正常的数据库设计中为了保持维护的便利性,许多
- 目录使用软件问题描述搭建神经网络训练参数损失函数参数优化代码数据集参数训练测试结语Hello,兄弟们,开始搞深度学习了,今天出第一篇博客,小
- 继续Mootools常用方法扩展,依然还是String类的扩展。方法:format说明:一个非常简单的format方法,和C#
- 只要不是HTTP_REFERER来源于(google.com google.cn *.google.com *.google.cn baid
- 个人觉得还是不要使用中文作为文件名的好,虽然我们用的语言是中文,毕竟中文容易出现问题,兼容性不好。用Dreamweaver制作网页时,如果插
- Python实现模拟时钟代码推荐# coding=utf8import sys, pygame, math, randomfrom pyga
- 虽然大多数web文档的顶部都有doctype声明,但很多人都没有注意它。它是在你新建一个文档时,由web创作软件草率处理的众多细节之一。虽然
- 這兩天﹐對xml作為數據庫產生了興趣﹐找了一些資料﹐也搞出了一點眉目﹐在這里記錄一下。算是對自己學習x
- 从CNNIC在2009年的报告中可以看到,超过80%的网民购物之前都要看评论(包括本站、其他站评论),超过80%的网民都比较信任口碑(包括网