小萌羽w

python 中有趣的列表推导式
前几天当我还在休息时候,一个跟我一样刚入门python这门语言的朋友问了一个关于for循环的问题,刚开始以为是就普...
扫描右侧二维码阅读全文
03
2019/05

python 中有趣的列表推导式

前几天当我还在休息时候,一个跟我一样刚入门python这门语言的朋友问了一个关于for循环的问题,刚开始以为是就普通的for循环表达式看一看教程就好了,当她发了图片询问这段代码的意思后,我乍一看跟之前的有些许的不一样,查阅学习后才知道这是一个列表推导式,感觉挺有趣也理解了一番就拿出来水一水好了

图片来源:
Author:Hiten Title: whisperコミ1お疲れ様でした~!



举个最简单的例子吧,让我们先假设一个问题:存在一个列表,列表里存放了1至9的数字 我们要选取大于7的数字并将其乘以二次方。
在平常我们学了for循环和If循环我们会怎样去写呢?
可能会是这样:

lst = []
for x in range(11):
  if x > 7:
    lst.append(x ** 2)
print(lst)

或者是:

lst1 = [1,2,3,4,5,6,7,8,9,10]
lst2 = []
for x in lst1:
  if x > 7:
    lst2.append(x ** 2)
print(lst2)

都可以得到结果[64, 81, 100]这一列数组
但是还有一种更加简单的方法,那就是用列表推导式
这是一个列表推导式的一个例子

old_list = [1,2,3,4,5,6,7,8,9,10]
new_list = [i ** 2 for i in old_list if i > 7]
print(new_list)

或者是

new_list = [i ** 2 for i in range(11) if i > 7]
print(new_list)

也可以得出结果[64, 81, 100]

从这些例子看过来可以发现列表推导式更简洁简单可读性也提高了,但是学习这个方法也要理解。其实这个列表推导式例子翻译过来就是上面的for循环一样的。

列表推导式书写形式:  
[表达式 for 变量 in 列表] 或者 [表达式 for 变量 in 列表 if 条件]

我个人理解下来,列表推导式就相当于把一个循环体简化成一条,将函数体里面的表达式放入了for循环的前头,判断语句放在了for循环的后头,先判断了后面的条件再运行for循环再运行表达式,从右至左执行

在明白这种形式后以后写代码也可以尝试用列表推导式书写,毕竟简单明了代码量少,自己暂时也只看到了这些,以后有多再继续补充,如果有一起学习的小伙伴欢迎讨论啦

Last modification:May 3rd, 2019 at 09:03 pm
If you think my article is useful to you, please feel free to appreciate

Leave a Comment