百木园-与人分享,
就是让自己快乐。

【Python3】推导式

Python 推导式

参考文章:[1] (Python 推导式 | 菜鸟教程)

Python推导式是一种独特的数据处理方式
可以从一个序列构建另一个新的数据序列的结构体

1 列表推导式

1.1 基本格式

[表达式 for 变量 in 列表]
或
[表达式 for 变量 in 列表 if 条件]
\'\'\'
1. 表达式
    可以是具有返回值的函数
2. for 变量 in 列表
    迭代列表将变量传入表达式中
3. if 条件
    过滤列表中不符合条件的值
\'\'\'

1.2 参考实例

# 从列表中提取首字母小于c的元素,并以全体大写的形式存储在另一个列表中
elements = [\'Omega\', \'mu\', \'alpha\', \'beta\', \'pi\', \'sigma\']
temp = [element.upper() for element in elements if element[0\'] < \'c\']
for i in temp:
    print(i)
\'\'\'
运行结果:
OMEGA
ALPHA
BETA
\'\'\'

# 计算1-30内可以被3整除的整数
mylist = [i for i in range(1, 31) if i % 3 == 0]
print(i)
\'\'\'
运行结果:
[3, 6, 9, 12, 15, 18, 21, 24, 27, 30]
\'\'\'

# 创建列表[(0,1),(1,2),(2,3),(3,4),(4,5),(5,6)]
res = [(i, i+1) for i in range(0, 6)]
print(res)
\'\'\'
运行结果:\'\'
[(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6)]
\'\'\'

# 应用列表推导式,去除列表中成绩小于80的字典
dict_list = [{\"科目\": \"高等数学\", \"成绩\": 96},
             {\"科目\": \"大学物理\", \"成绩\": 90},
             {\"科目\": \"线性代数\", \"成绩\": 91},
             {\"科目\": \"大学英语\", \"成绩\": 75},
             {\"科目\": \"分析化学\", \"成绩\": 81},
             {\"科目\": \"有机化学\", \"成绩\": 76}]
res = [d for d in dict_list if d[\"成绩\"] >= 80]
print(res)
\'\'\'
运行结果:
[{\'科目\': \'高等数学\', \'成绩\': 96},
 {\'科目\': \'大学物理\', \'成绩\': 90},
 {\'科目\': \'线性代数\', \'成绩\': 91},
 {\'科目\': \'分析化学\', \'成绩\': 81}]
\'\'\'



2 字典推导式

2.1 基本格式

{键表达式:值表达式 for 变量 in 某表}
或
{键表达式:值表达式 for 变量 in 某表 if 条件}

2.2 参考实例

# 通过字典推导式,颠倒字典的键名和值
dict_list = {\"科目\": \"高等数学\", \"成绩\": 96}
res = {v:k for k,v in dict_list.items()}
print(res)
\'\'\'
运行结果:
{\'高等数学\': \'科目\', 96: \'成绩\'}
\'\'\'

# 使用字符串及其长度创建字典
mylist = [\'MySQL\', \'Python\', \'C++\', \'Java\', \'HTML\', \'CSS\']
mydict = {k: len(k) for k in mylist}
print(mydict)
\'\'\'
运行结果:
{\'MySQL\': 5, \'Python\': 6, \'C++\': 3, \'Java\': 4, \'HTML\': 4, \'CSS\': 3}
\'\'\'

# 生成一个包含5个随机数的字典
import random
res = {k: random.randint(10, 100) for k in range(1, 7)}
print(res)
\'\'\'
运行结果:
{1: 39, 2: 60, 3: 40, 4: 44, 5: 42, 6: 96}
\'\'\'

# 将两个长度相同的列表合并成字典
course = [\'Python\', \'MySQL\', \'Java\', \'Javascript\', \'HTML\']
score = [99, 89, 80, 60, 60]
course_score = {k: v for k, v in zip(course, score)}
print(course_score)
\'\'\'
运行结果:
{\'Python\': 99, \'MySQL\': 89, \'Java\': 80, \'Javascript\': 60, \'HTML\': 60}
\'\'\'



3 集合推导式

3.1 基本格式

{表达式 for 项目 in 序列}
或
{表达式 for 项目 in 序列 if 条件}

3.2 参考实例

# 提取是Python的字母并存储
res = {v for v in \'pdyftaahdofgng\' if v in \'python\'}
print(res)
\'\'\'
运行结果:
{\'o\', \'y\', \'h\', \'t\', \'p\', \'n\'}
\'\'\'

# 获取字符串的长度,并去重
course = [\'Python\', \'MySQL\', \'Java\', \'Javascript\', \'HTML\']
res = {len(item) for item in course}
print(res)
\'\'\'
运行结果:
{10, 4, 5, 6}
\'\'\'

# 计算数字3,4,5的立方数
res = {v**3 for v in range(3, 6)}
print(res)
\'\'\'
运行结果:
{64, 27, 125}
\'\'\'



4 元组推导式

4.1 基本格式

\'\'\'
元组推导式返回生成器对象
可以使用函数tuple()直接将生成器对象转换成元组
\'\'\'

(表达式 for 项目 in 序列)
或
(表达式 for 项目 in 序列 if 条件)

4.2 参考实例

# 计算数字3,4,5的立方数
res = (v**3 for v in range(3, 6))
print(tuple(res))
\'\'\'
运行结果:
(27, 64, 125)
\'\'\'

来源:https://www.cnblogs.com/ohwell2aha/p/16493768.html
本站部分图文来源于网络,如有侵权请联系删除。

未经允许不得转载:百木园 » 【Python3】推导式

相关推荐

  • 暂无文章