零基础学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推导式的主要内容,如果未能解决你的问题,请参考以下文章