首页 > 编程语言 >5.Python3 推导式

5.Python3 推导式

时间:2024-03-05 13:45:00浏览次数:27  
标签:推导 元组 Python3 exp 列表 表达式 out

Python3 推导式

推导式(comprehensions),又称解析式,是 Python 中常见的语法糖。推导式可以从一个数据序列构建另一个新的数据序列,常用于数据处理场景。

表达式 for 迭代变量 in 可迭代对象 [if 条件表达式]

其中 if 条件判断根据需要,可有可无。

Python 支持各种数据结构的推导式:

  • 列表(list)推导式
  • 字典(dict)推导式
  • 集合(set)推导式
  • 元组(tuple)推导式

1.列表推导式

列表推导式是一种简化的 for 循环创建列表,为最常见的推导式。列表推导式格式为:

[表达式 for 迭代变量 in 列表] 
[out_exp_res for out_exp in input_list]

或者 

[表达式 for 迭代变量 in 列表 if 条件]
[out_exp_res for out_exp in input_list if condition]
  • out_exp_res:列表生成元素表达式,可以是有返回值的函数。
  • for out_exp in input_list:迭代 input_list 将 out_exp 传入到 out_exp_res 表达式中。
  • if condition:条件语句,可以过滤列表中不符合条件的值。
l = []
for i in range(5):
	l.append(i)
print(l)
[0, 1, 2, 3, 4]
#上述 for 循环转换为列表推导式则为:
l = [l for l in range(5)]
print(l)
[0, 1, 2, 3, 4]
#可见,与单纯 for 循环相比,作为语法糖,列表推导式简化了代码,返回新的列表。
#推导式比for循环多了一个表达式和条件表达式,在判断条件成立后此次循环将可迭代对象传给迭代变量,然后再运行表达式,最后将表达式的值赋值给列表

2.字典推导式

字典推导基本格式:

{ key_expr: value_expr for value in collection }

或

{ key_expr: value_expr for value in collection if condition }

3.集合推导式

集合推导式基本格式:

{ expression for item in Sequence }
或
{ expression for item in Sequence if conditional }

4.元组推导式(生成器表达式)

元组推导式可以利用 range 区间、元组、列表、字典和集合等数据类型,快速生成一个满足指定需求的元组。

元组推导式基本格式:

(expression for item in Sequence )
或
(expression for item in Sequence if conditional )

元组推导式和列表推导式的用法也完全相同,只是元组推导式是用 () 圆括号将各部分括起来,而列表推导式用的是中括号 [],另外元组推导式返回的结果是一个生成器对象。

例如,我们可以使用下面的代码生成一个包含数字 1~9 的元组:

>>> a = (x for x in range(1,10))
>>> a
<generator object <genexpr> at 0x7faf6ee20a50>  # 返回的是生成器对象

>>> tuple(a)       # 使用 tuple() 函数,可以直接将生成器对象转换成元组
(1, 2, 3, 4, 5, 6, 7, 8, 9)

标签:推导,元组,Python3,exp,列表,表达式,out
From: https://www.cnblogs.com/littlecamel/p/18053858

相关文章

  • 4.Python3 运算符
    Python3运算符1.Python算术运算符以下假设变量a=10,变量b=21:运算符描述实例+加-两个对象相加a+b输出结果31-减-得到负数或是一个数减去另一个数a-b输出结果-11*乘-两个数相乘或是返回一个被重复若干次的字符串a*b输出结果210/除......
  • 9.Python3 面向对象
    Python3面向对象1.类定义Python中定义一个类使用class关键字实现,其基本语法格式如下:classClassName:<statement-1>...<statement-N>类实例化后,可以使用其属性,创建一个类之后,可以通过类名访问其属性。无论是属性还是方法,对于类来说,它们都不是......
  • 8.Python3 模块和包
    Python3模块和包为此Python提供了一个办法,把这些定义存放在文件中,为一些脚本或者交互式的解释器实例使用,这个文件被称为模块。模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py。模块可以被别的程序引入,以使用该模块中的函数等功能。这也是使用python标准库的方法......
  • python3.6.8 安装解决ssl问题
    https://www.cnblogs.com/mqxs/p/9103031.html#!/bin/bashecho"正在安装相关组件"yuminstall-yopenssl-develbzip2-develexpat-develgdbm-develreadline-develsqlite-develgcc-c++gccopenssl-develecho"下载安装包"wgethttps://www.python.org/ft......
  • 字典推导式
    字典推导式字典推导式是一种简洁的构造字典的方式。它的语法和列表推导式类似,只不过结果是一个字典,而不是列表。enumerate函数enumerate函数可以将一个可迭代对象转化为一个枚举对象,其中每个元素都是一个包含索引和值的元组。它的基本语法如下:enumerate(iterable,[start=0])......
  • 集合推导式
    集合推导式集合推导式是一种简洁的构造集合的方式。它的语法和列表推导式类似,只不过结果是一个集合,而不是列表。以下是一个示例,其中我们要根据一组人的年龄和存款量来决定给他们发放哪种类型的卡。我们要统计所有可能的卡类型。lst=[{"name":"赵沈阳","age":18,"money":......
  • centos7 安装python3.8
    #cd/usr/local#yum-ygroupinstall"Developmenttools"#yum-yinstallzlib-develbzip2-developenssl-develncurses-develsqlite-develreadline-develtk-develgdbm-develdb4-devellibpcap-develxz-devel#yuminstalllibffi-devel-ywgethttps:/......
  • 列表推导式
    推导式推导式是通过一行循环判断遍历出一些列数据的方法。语法:valforvaliniterable#创建一个包含1到50的列表:lst=[iforiinrange(1,51)]print(lst)带有运算操作的推导式创建一个列表,其中每个元素都是原始列表中对应元素的两倍:lst=[i*2foriinrange(1,6)......
  • python推导式(comprehension)
    #推导式#1.zip()函数##功能:将多个迭代器Iterator对象或者可迭代对象中的元素压缩在一起,返回一个zip对象##zip对象既是一个可迭代对象也是一个迭代器对象names=["Tony","Tom","Gray","Lisa"]grades=[11,22,31,21]chart1=zip(names,grades)print(list(ch......
  • C++填坑系列——EffectiveModernC++之类型推导
    接下来会记录我在学习《EffectiveModernC++》的一些总结和思考。鉴于C++的知识太多了,我难以全面覆盖到学习,所以这里借此来补充和发散自己的学习心得:)以下内容由学习这个网站EffectiveModernC++的中文翻译内容得来https://cntransgroup.github.io/EffectiveModernCppChine......