资讯专栏INFORMATION COLUMN

Python3列表解析之任意迭代、表达式、条件和嵌套循环等特性详解

callmewhy / 1731人阅读

摘要:概述列表解析即利用现有的可迭代对象创建新的列表的语法,其过程完全可以用循环复刻,但其解析效率比循环快一些,缺点也很明显,即不适合用于大数据迭代对象的解析,因为会占用大量内存,导致。当然列表解析让人爱不释手的另一个原因就是简洁。

概述

列表解析即利用现有的可迭代对象创建新的列表的Python语法,其过程完全可以用for循环复刻,但其解析效率比for循环快一些,缺点也很明显,即不适合用于大数据迭代对象的解析,因为会占用大量内存,导致MemoryError。当然列表解析让人爱不释手的另一个原因就是简洁。

列表解析基础示例

解析列表

</>复制代码

  1. L = [1, 2, 3, 4, 5]
  2. LL = [x ** 2 for x in L]
  3. [print(x) for x in LL]

示例结果:

</>复制代码

  1. 1
  2. 4
  3. 9
  4. 16
  5. 25

示例中我们完成了对原列表元素每个值进行平方的操作,每个元素的平方结果构成了新的列表

解析字典

</>复制代码

  1. D = {
  2. "one": 1,
  3. "two": 2,
  4. "three": 3,
  5. "four": 4,
  6. "five": 5
  7. }
  8. L = [D[key] ** 2 for key in D]
  9. [print(x) for x in L]

</>复制代码

  1. 1
  2. 4
  3. 9
  4. 16
  5. 25

示例中我们利用列表解析获取字典的键值并对每个键值进行平方的操作,而每个键值的平方结果构成了新的列表

解析字符串

</>复制代码

  1. S = "12345"
  2. L = [int(s) ** 2 for s in S]
  3. [print(x) for x in L]

示例结果

</>复制代码

  1. 1
  2. 4
  3. 9
  4. 16
  5. 25

示例中我们利用列表解析获取字符串中单个字符串并且转为整型并进行平方和的操作,而每个平方后的结果构成了新的列表

解析文件

</>复制代码

  1. with open("ex.txt") as f:
  2. lines = f.readlines()
  3. LINES = [line.strip().title() for line in lines]
  4. [print(line) for line in LINES]

</>复制代码

  1. i like python.
  2. python makes me happy.
  3. without python, without live.

示例中我们甚至可以利用列表解析读取文件中的数据

表达式

列表解析中的表达式(expr)可以是简单的或者复杂的表达式,甚至是函数,若在前面的例子中我们利用列表解析逐一打印了列表中的数据。

</>复制代码

  1. def is_even(x):
  2. if x >= 0 and x % 2:
  3. return x, True
  4. else:
  5. return x, False
  6. L = [1, 2, 3, 4, 5]
  7. L_EVEN = [is_even(x) for x in L]
  8. print(L_EVEN)

示例结果

</>复制代码

  1. [(1, True), (2, False), (3, True), (4, False), (5, True)]
条件列表解析

在列表解析中我们也可以直接加入条件限制解析出的元素

</>复制代码

  1. L = [1, 2, 3, 4, 5]
  2. L_EVEN = [x for x in L if x >= 0 and x % 2]
  3. [print(EVEN) for EVEN in L_EVEN]

示例结果:

</>复制代码

  1. 1
  2. 3
  3. 5
多值列表解析

列表解析也支持对迭代对象的多值解析

</>复制代码

  1. D = {
  2. "one": 1,
  3. "two": 2,
  4. "three": 3,
  5. "four": 4,
  6. "five": 5
  7. }
  8. L = ["{} = {}".format(key, value) for (key, value) in D.items()]
  9. [print(x) for x in L]

示例结果

</>复制代码

  1. one = 1
  2. two = 2
  3. three = 3
  4. four = 4
  5. five = 5
嵌套循环

列表解析可以进行嵌套循环,原理和for中的嵌套循环一致

</>复制代码

  1. L1 = ["a", "b", "c"]
  2. L2 = ["1", "2", "3"]
  3. L = [x+y for x in L1 for y in L2]
  4. [print(x) for x in L]

示例结果

</>复制代码

  1. a1
  2. a2
  3. a3
  4. b1
  5. b2
  6. b3
  7. c1
  8. c2
  9. c3

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/6763.html

相关文章

  • Python3列表解析任意迭代达式条件嵌套循环特性详解

    摘要:概述列表解析即利用现有的可迭代对象创建新的列表的语法,其过程完全可以用循环复刻,但其解析效率比循环快一些,缺点也很明显,即不适合用于大数据迭代对象的解析,因为会占用大量内存,导致。当然列表解析让人爱不释手的另一个原因就是简洁。 概述 列表解析即利用现有的可迭代对象创建新的列表的Python语法,其过程完全可以用for循环复刻,但其解析效率比for循环快一些,缺点也很明显,即不适合用于大数据迭...

    番茄西红柿 评论0 收藏0
  • Python基础控制结构

    摘要:基础之控制结构学习目标代码块与缩进条件语句语句语句的嵌套断言循环循环循环中断循环控制语句综合嵌套列表解析式基础相关链接学习目标是简洁易学面向对象的编程语言。 Py...

    liaosilzu2007 评论0 收藏0
  • 首次公开,整理12年积累的博客收藏夹,零距离展示《收藏夹吃灰》系列博客

    摘要:时间永远都过得那么快,一晃从年注册,到现在已经过去了年那些被我藏在收藏夹吃灰的文章,已经太多了,是时候把他们整理一下了。那是因为收藏夹太乱,橡皮擦给设置私密了,不收拾不好看呀。 ...

    Harriet666 评论0 收藏0
  • Python3学习】走进Python

    摘要:如为,小数点后两位是,存在四舍五入。在中,有一个小坑,就是并不是真正的四舍五入如图而可以这样的总结为在奇数的时候,是四舍五入,在偶数的时候是五舍六入函数执行后输出的提示返回的是数据类型是,所以有时需要进行类型转换,这样的函数。 Python语言的概述 Pyhthon 是 蟒蛇的意思。python语言的拥有者是 Python Software Foundation(PSF)RSF是一个非...

    fuchenxuan 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<