前几天当我还在休息时候,一个跟我一样刚入门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:April 7th, 2020 at 07:30 am
如果觉得我的文章对你有用,请随意赞赏