以下内容基于Python 3x

列表解析式List comprehensive

解析式是一种语法糖,其优点有提高效率,减少工作量,减少出错,简化代码,提高可读性。

语法格式如下:

[expression for item in iterable if condition]

返回一个新的列表

查看几个例子即可明白:

# Example
# 迭代0-9至res1
res1 = [x for x in range(10)]
# 迭代0-9并且能整除2的结果至res2
res2 = [x for x in range(10) if x % 2 == 0]
# 迭代0-19能整除2和3的结果至res3
res3 = [x for x in range(20) if x % 2 == 0 and not x % 3]
print(res1, res2, res3, sep="\n") # Result
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 2, 4, 6, 8]
[0, 6, 12, 18]

进阶:

# Example 1
res = []
for x in range(3):
for y in range(3):
res.append(x + y)
print(res) # 使用列表解析式的 Example 1
res1 = [x + y for x in range(3) for y in range(3)]
print(res1) # Example 2
res2 = []
for x in range(3):
for y in range(3):
if not (x % 2 or y % 2):
res2.append(x + y)
print(res2) # Example 3
res3 = []
for x in range(3):
for y in range(3):
if x % 2 == 0:
if y % 2 == 0:
res3.append(x + y)
print(res3) # 使用列表解析式的 Example 2 and Example 3
res4 = [x + y for x in range(3) for y in range(3) if not (x % 2 or y % 2)]
print(res4)

打印九九乘法表:

处理好样式格式化问题,其实就很好理解

# Example 4
for x in range(1, 10):
for y in range(1, x + 1):
print("{} * {} = {}\t".format(y, x, y * x), end='')
print() # 使用列表解析式的 Example 4
[print("{} * {} = {}\t{}".format(y, x, y * x, '\n' if x == y else ''), end='') for x in range(1, 10) for y in range(1, x + 1)]

集合解析式Set comprehensive

语法格式:

{expression for item in iterable if condition}

返回一个新的集合

Example:

res = {x for x in range(5)}
print(res)

字典解析式Dict comprehensive

语法格式:

{key: value for item in iterable if condition}

返回一个新的字典

Example:

res = {chr(x): x for x in range(65, 70)}
print(res) # Result
{'A': 65, 'B': 66, 'E': 69, 'D': 68, 'C': 67}

总结

列表解析式在Python2中引入,集合与字典解析式在Python3中引入,后来同样也支持了Python2.7。

一般来说,应该多应用解析式,简短、高效。如果看到一个解析式过于复杂,则可以考虑将其层层拆解为等价的for循环表达形式,然后去理解和应用。

Python列表元组和字典解析式的更多相关文章

  1. Python—列表元组和字典

    Python-列表元组和字典 列表 元组 字典 列表: 列表是Python中的一种数据结构,他可以存储不同类型的数据.尽量存储同一种类型 列表索引是从0开始的,我们可以通过索引来访问列表的值. 列表的 ...

  2. Python成长笔记 - 基础篇 (三)python列表元组、字典、集合

    本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码   一.列表和元组的操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义 ...

  3. python—列表,元组,字典

    ——列表:(中括号括起来:逗号分隔每个元素:列表中的元素可以是数字,字符串,列表,布尔值等等) (列表元素可以被修改)  list(类)    (有序的) [1]索引取值:切片取值:for循环:whi ...

  4. python列表元组

    python列表元组 索引 切片 追加 删除 长度 循环 包含   定义一个列表 my_list = []     my_list = list()   my_list = ['Michael', ' ...

  5. 【277】◀▶ Python 列表/元组/字典说明

    目录: 前言 一.访问列表中的值 二.更新列表 三.删除列表元素 四.Python 列表脚本操作符 五.Python 列表函数 & 方法 参考:Python 列表(List)使用说明 列表截取 ...

  6. Python 列表,元组,字典

    0)字符串切片 py_str = 'python' >>>py_str[0] #取第一个字符串,返回值为"p",超出范围会报错 >>>py_st ...

  7. Python 列表/元组/字典总结

    序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推. Python有6个序列的内置类型,但最常见的是列表和元组. 序列 ...

  8. Python列表,元组,字典,字符串方法笔记

    01. 列表 1.1 列表的定义 List(列表) 是 Python 中使用 最频繁 的数据类型,在其他语言中通常叫做 数组 专门用于存储 一串 信息 列表用 [] 定义,数据 之间使用 , 分隔 列 ...

  9. python3笔记十八:python列表元组字典集合文件操作

    一:学习内容 列表元组字典集合文件操作 二:列表元组字典集合文件操作 代码: import pickle  #数据持久性模块 #封装的方法def OptionData(data,path):    # ...

随机推荐

  1. 创建AVL树,插入,删除,输出Kth Min

    https://github.com/TouwaErioH/subjects/tree/master/C%2B%2B/PA2 没有考虑重复键,可以在结构体内加一个int times. 没有考虑删除不存 ...

  2. spark mllib als 参数

    在一定范围内按照排列组合方式对rank,iterations,lambda进行交叉评估(根据均方根误差),找到最小误差的组合,用于建立矩阵分解模型.Signature: ALS.train( rati ...

  3. Netty(三)基于Bio和Netty 的简易版Tomcat

    参考代码: https://github.com/FLGBetter/tomcat-rpc-demo

  4. HDU 5608 function(莫比乌斯反演 + 杜教筛)题解

    题意: 已知\(N^2-3N+2=\sum_{d|N}f(d)\),求\(\sum_{i=1}^nf(i) \mod 1e9+7\),\(n\leq1e9\) 思路: 杜教筛基础题? 很显然这里已经设 ...

  5. webfullstack website

    webfullstack website refs https://www.lanqiao.cn/paths/ xgqfrms 2012-2020 www.cnblogs.com 发布文章使用:只允许 ...

  6. React + GraphQL 2020 速成课程

    React + GraphQL 2020 速成课程 technologies React (to build our user interface) GraphQL (to get and chang ...

  7. SQL Tutorials & MySQL & SQL Server

    SQL Tutorials SQL MySQL https://www.mysql.com/ $ mysql --version # mysql Ver 8.0.21 for osx10.15 on ...

  8. Flutter & App

    Flutter & App Android & iOS https://flutter.dev/docs/deployment/flavors https://flutter.dev/ ...

  9. js assert

    js assert console.assert The console.assert() method writes an error message to the console if the a ...

  10. Taro API

    Taro API Taro 的 API 包括 Taro 内置提供的 API 以及对小程序的端能力 API 的封装. https://taro-docs.jd.com/taro/docs/apis/ab ...