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


猜你喜欢
- 50个常用sql语句 Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(
- 1.安装pyserialhttps://pypi.python.org/pypi/pyserialDoc:http://pythonhost
- 2021年7月1日,官方正式发布了1.0Datatable版本。1.0版本支持windows和linux,以及Macos。 具体文档可以见:
- 概述源码地址torch版本训练环境没有按照torch的readme一样的环境,自己部署环境为:torch==1.9.1torchvision
- MySQL数据库恢复到指定时间点时,我们必须通过MySQL全备+MySQL增量备份(可选)+MySQL的二进制日志(binlog)进行重放来
- python安装库时,有时候会报错windows error 5,可以尝试关闭所有使用python的编辑器、文件等,然后重新pip安装,如果
- 目标:在64位linux系统上编译出32位程序。操作:1.执行 go env 查看当前go环境配置2.执行 export GOARCH=38
- 本文实例为大家分享了vue.js实现简易折叠面板的具体代码,供大家参考,具体内容如下代码如下:主文件:app.vue<template
- 建立合理的索引提高SQL Server的性能在应用系统中,尤其在联机事务处理系统中,对数据查询及处理速度已成为衡量应用系统成败的标准。而采用
- Python中的布尔类型Python中的布尔类型(bool)只有两个取值,分别是True和False。bool类型通常用于逻辑判断和条件控制
- 一、 背景由于公司业务需要动态配置一些存储过程来生成数据,之前尝试过使用jpa来完成,或多或少都存在一些问题,最后使用了spring的Jdb
- 禁止鼠标右键:$(document).ready(function(){ $(document).bind("contextmen
- 思考:当我们输入这个语句的时候,Python内部是如何去创建这个对象的?a = 1.0对象使用完毕,销毁的时机又是怎么确定的呢?下面,我们以
- 本文实例讲述了Python向Excel中插入图片的简单实现方法。分享给大家供大家参考,具体如下:使用Python向Excel文件中插入图片,
- 本文实例讲述了JavaScript中filter的用法。分享给大家供大家参考,具体如下:filterfilter也是一个常用的操作,它用于把
- 一、安装pip2pi工具:pip install pip2pi或:git clone https://github.com/wolever/
- 目录一.前提二.token加密与解密三.视图CBV四.framework认证功能五.利用postman软件在前端提交一.前提首先是这个代码基
- function flushDataTree() { dataset_mainMenuTemp.setShowLoadingTip(true
- 最近做拍卖小程序,里面有一个需求是监控拍卖时间,需要对时间进行动态的倒计时显示从构思开始,做这个倒计时也花了我4个小时多,也遇到了很多问题,
- 目录典型的函数装饰器叠放装饰器参数化装饰器标准库中的装饰器functools.wrapsfunctools.lru_cachefunctoo