以下内容基于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. Pycharm怎么安装?

    摘要:工欲善其事必先利其器,每个人都有自己心中理想的集成开发环境,这里我们不做讨论,今天只介绍Pycharm怎么安装. 首先打开官网:https://www.jetbrains.com/pycharm ...

  2. WPF 之 MultiBinding(多路 Binding)(四)

    一.前言 ​ 有时候 UI 需要显示的信息由不止一个数据来源决定,这时候就需要使用 MultiBinding ,即多路 Binding. ​ MultiBinding 与 Binding 一样均以 B ...

  3. java大数函数(附官方文档链接)

    java文档 字段摘要 static BigInteger ONE           BigInteger 的常量 1. static BigInteger TEN           BigInt ...

  4. python+requests爬取百度文库ppt

    实验网站:https://wenku.baidu.com/view/c7752014f18583d04964594d.html 在下面这种类型文件中的请求头的url打开后会得到一个页面 你会得到如下图 ...

  5. hdu1541 Stars

    Problem Description Astronomers often examine star maps where stars are represented by points on a p ...

  6. fzu2202 犯罪嫌疑人

    Problem Description 福尔摩斯是个大侦探,他总是在解决疑难案件.这一次的案件也不例外,案件是这样的:有编号为1到N的N位嫌疑犯,他们其中有一个犯了罪,然后每个嫌疑犯都被询问,&quo ...

  7. 请问什么时候对象分配会不在 TLAB 内分配

    Java 对象分配流程 我们这里不考虑栈上分配,这些会在 JIT 的章节详细分析,我们这里考虑的是无法栈上分配需要共享的对象. 对于 HotSpot JVM 实现,所有的 GC 算法的实现都是一种对于 ...

  8. ajax和comet

    一,XMLHttpRequest对象 IE5是最早引入XHR对象的浏览器,XHR对象是通过MSXML库中的一个ActiveX对象实现的 使用MSXML库中的XHR对象,编写一个函数如下 functio ...

  9. Java中的变量之成员变量、本地变量与类变量

    Java中的变量: 1.成员变量(实例变量,属性) 2.本地变量(局部变量) 3.类变量(静态属性) 一.成员变量(实例变量,属性) 1.1-成员变量:(在类中定义,    访问修饰符   修饰符   ...

  10. HDU - 4462 Scaring the Birds

    It's harvest season now! Farmer John plants a lot of corn. There are many birds living around his co ...