python笔记 列表解析式上

126 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第19天,点击查看活动详情

0 环境

  • 编辑器:idea或vscode
  • 系统版本:windows10
  • python版本:3.9.6

1 前言

先了解列表解析式前,先说一下解析式,它是一个统称,如果细分的话:列表解析式、生成器解析式、集合解析式、字典解析式。它存在的意思是啥呢,最大的亮点简化代码,缺点嘛,因为代码简写了,相对来说,代码不够直观,增加了阅读时间。简单的实例,遍历列表里每个元素,并且执行加1操作,代码如下:

lists = list(range(3))
result = []
for item in lists:
    result.append(item + 1)
print(f"result --> {result}")

print("解析式 -->", [item + 1 for item in lists])

image.png

2 列表解析式

1 定义

[*expression* for *item* in *iterable* if *condition* == True]

2 使用

比如判断偶数,定义一个列表,遍历列表,若是取余2等于0,该列表元素被追加到新的列表中。

lists = list(range(6))
result = []
for item in lists:
    if item % 2 == 0:
        result.append(item)
print("result -->", result)

image.png

在看看用列表解析式,先对照列表解析式的定义,尝试着写,你会发现很简单。

lists = list(range(6))
result = []
for item in lists:
    if item % 2 == 0:
        result.append(item)
print("result -->", result)
print("列表解析式 -->", [item for item in lists if item % 2 == 0])

image.png

在比如列表解析式支持多层级的if判断?和上面的代码类似,只要在第一个if判断后面,在加一个if判断即可。假如你不需要多层级,只是单单想实现if item大于0 和 item 小于3,和之前所学一样,if item > 0 and item < 3。

lists = list(range(6))
result = []
for item in lists:
    if item > 0:
        if item < 3:
            result.append(item)
print("result -->", result)
print("列表解析式 -->", [item for item in lists if item > 0 if item < 3])

image.png

3 总结

列表表达式它的一层for循环,简化了代码,可读性也还行,还可以加if,注意多个if组合。