零基础学PythonDay9 Python推导式

Posted 光于前裕于后

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了零基础学PythonDay9 Python推导式相关的知识,希望对你有一定的参考价值。

昨天跟大家一起学习了 Python基本数据类型之Dictionary,没学的兄弟姐妹们看这里零基础学Python,至此,我们已经学完了Python所有的基本数据类型,今天让我们开始学习Python推导式吧。
需注意的是,【零基础学Python】此系列都使用Python3。


Python推导式是Python特有的数据处理方法,可以简便的将一个数据序列转换成新的数据序列。

列表推导式

[表达式 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][结果1 if 条件 else 结果2 for 变量 in 原列表]

比如过滤掉长度大于2的字符串,生成新的列表

>>> jimeng = ['黑嘴', '张开朗', '张一蛋', '黑豆', '帅帅龙']
>>> print(jimeng)
['黑嘴', '张开朗', '张一蛋', '黑豆', '帅帅龙']
>>> new_list = [name for name in jimeng if len(name)<=2]
>>> print(new_list)
['黑嘴', '黑豆']
# 将长度小于2的字符串改为字符长度
>>> new_list = [name if len(name)>2 else len(name) for name in jimeng]
>>> print(new_list)
[2, '张开朗', '张一蛋', 2, '帅帅龙']

计算116以内可以被9整除的数

>>> nums = [i for i in range(116) if i%9 == 0]
>>> print(nums)
[0, 9, 18, 27, 36, 45, 54, 63, 72, 81, 90, 99, 108]

字典推导式

定义与列表推导式类似

 key_expr: value_expr for value in collection  key_expr: value_expr for value in collection if condition 

下面演示列表转字典

>>> jimeng = ['黑嘴', '张开朗', '张一蛋', '黑豆', '帅帅龙']
>>> print(jimeng)
['黑嘴', '张开朗', '张一蛋', '黑豆', '帅帅龙']
>>> new_dict = name:len(name) for name in jimeng
>>> print(new_dict)
'黑嘴': 2, '张开朗': 3, '张一蛋': 3, '黑豆': 2, '帅帅龙': 3

集合推导式

定义与字典推导式类似,不加value即可

 expression for item in Sequence  expression for item in Sequence if conditional 

列表转集合,并*2,会去重重复

>>> jimeng = ['黑嘴', '张开朗', '张一蛋', '黑豆', '帅帅龙', '黑嘴']
>>> print(jimeng)
['黑嘴', '张开朗', '张一蛋', '黑豆', '帅帅龙', '黑嘴']
>>> new_set = name*2 for name in jimeng
>>> print(new_set)
'帅帅龙帅帅龙', '黑豆黑豆', '张一蛋张一蛋', '张开朗张开朗', '黑嘴黑嘴'

元组推导式

定义与列表类似,中括号改为小括号()

>>> jimeng = ['黑嘴', '张开朗', '张一蛋', '黑豆', '帅帅龙', '黑嘴']
>>> new_tuple = (name for name in jimeng if len(name)<3)
>>> print(new_tuple)
<generator object <genexpr> at 0x0000018B7BB0ED60>
# 需使用tuple()函数,将生成器对象转为元组
>>> print(tuple(new_tuple))
('黑嘴', '黑豆', '黑嘴')

元组非常简单易用,兄弟姐妹们学废了吗

以上是关于零基础学PythonDay9 Python推导式的主要内容,如果未能解决你的问题,请参考以下文章

零基础学PythonDay9 Python推导式

零基础学PythonDay10 Python解释器

零基础学PythonDay10 Python解释器

零基础学Python需要多久

零基础学python学起来容易吗?

转行零基础该如何学Python?