美文网首页Python之佳
python列表推导式

python列表推导式

作者: 派派森森 | 来源:发表于2019-01-21 15:01 被阅读0次

循环可以用来生成列表:

values = [10, 21, 4, 7, 12]
squares = []
for x in values:
    squares.append(x**2)
print squares
[100, 441, 16, 49, 144]

列表推导式可以使用更简单的方法来创建这个列表:

values = [10, 21, 4, 7, 12]
squares = [x**2 for x in values]
print squares
[100, 441, 16, 49, 144]

还可以在列表推导式中加入条件进行筛选。

例如在上面的例子中,假如只想保留列表中不大于10的数的平方:

values = [10, 21, 4, 7, 12]
squares = [x**2 for x in values if x <= 10]
print squares
[100, 16, 49]

也可以使用推导式生成集合和字典:

square_set = {x**2 for x in values if x <= 10}
print(square_set)
square_dict = {x: x**2 for x in values if x <= 10}
print(square_dict)
set([16, 49, 100])
{10: 100, 4: 16, 7: 49}

再如,计算上面例子中生成的列表中所有元素的和:

total = sum([x**2 for x in values if x <= 10])
print(total)
165
想一起学习的,可以加入我的QQ群`923414804`。

但是,Python会生成这个列表,然后在将它放到垃圾回收机制中(因为没有变量指向它),这毫无疑问是种浪费。

为了解决这种问题,与xrange()类似,Python使用产生式表达式来解决这个问题:

total = sum(x**2 for x in values if x <= 10)
print(total)
165

与上面相比,只是去掉了括号,但这里并不会一次性的生成这个列表。

比较一下两者的用时:

x = range(1000000)
%timeit total = sum([i**2 for i in x])
1 loops, best of 3: 3.86 s per loop
%timeit total = sum(i**2 for i in x)
1 loops, best of 3: 2.58 s per loop

相关文章

  • Python中各种推导式

    Python的各种推导式(列表推导式,字典推导式,集合推导式) 列表(list)推导式 字典(dict)推导式 集...

  • python推导式

    python的各种推导式(列表推导式、字典推导式、集合推导式) 推导式comprehensions(又称解析式),...

  • 024python的各种推导式

    python的各种推导式(列表推导式、字典推导式、集合推导式) 推导式comprehensions(又称解析式),...

  • 列表推导式

    列表推导式 推导式 推导式(又称解析器),是 Python 独有的一种特性。使用推导式可以快速生成列表、元组、字典...

  • Python——生成器、列表生成式、迭代器

    Python列表生成式 列表推导式的一般语法 这种语法等价于以下代码 下面举一些列表推导式的栗子: Python中...

  • #抬抬小手学Python# 列表推导式与字典推导式

    列表推导式与字典推导式 在 Python 中推导式是一种非常 Pythonic 的知识,本篇博客将为你详细解答列表...

  • 向量化

    python向量化本身做得不是很好需要借助函数式编程或者列表推导式实现 1 列表推导式 2 函数式编程

  • Python 入门之推导式

    Python 入门之 推导式 推导式就是构建比较有规律的列表,生成器,字典等一种简便的方式 1、推导式 (1)列表...

  • 7 列表推导式、dict、string的一些其他方法

    列表推导式 列表推导式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建l...

  • 推导式

    Python语言有一种独特的推导式语法,相当于语法糖的存在1.列表推导式列表推导式是一种快速生成列表的方式。其形式...

网友评论

    本文标题:python列表推导式

    本文链接:https://www.haomeiwen.com/subject/jbgddqtx.html