首页 » InfoTech »

用List Comprehensions创建复杂列表

2018年5月16日 / 33次阅读
Python

打开支付宝首页,搜索“529018372”,即可领取红包!可重复领。

特色图片

Python的语句很靠近我们说话,比如这个list comprehensions,有人翻译为列表生成器。但comprehension是理解的意思,没有生成的意思。通过list comprehensions,我们可以很轻松创建复杂列表,并且很好理解。

可以用range函数来创建类别,但是复杂一点的就不行了:

>>>
>>> a = list(range(10))
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> b = [x * x for x in range(10)]
>>> b
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
>>>

还可以更复杂一点,加个if条件判断,但是还是非常好理解:

>>>
>>> c = [x * x for x in range(10) if x%2==0]
>>> c
[0, 4, 16, 36, 64]
>>>

也可以是两个变量,两个for循环:

>>>
>>> d = [x + y for x in 'abc' for y in 'xyz']
>>> d
['ax', 'ay', 'az', 'bx', 'by', 'bz', 'cx', 'cy', 'cz']
>>>

仔细看看d的内容,就是遍历。还可以有更多for循环,不过不常用。

对个for循环时,也可以使用if做条件判断:

>>> d = [x + y for x in 'abc' if x == 'a' for y in 'xyz']
>>> d
['ax', 'ay', 'az']
>>>
>>> d = [x+y for x in 'abc' for y in 'xyz' if x == 'a']
>>> d
['ax', 'ay', 'az']
>>>

if条件判断放在中间和后面都是一样的。

 

Python官方的一段说明:

A list comprehension consists of brackets containing an expression followed by a for clause, then zero or more for or if clauses. The result will be a new list resulting from evaluating the expression in the context of the for and if clauses which follow it. For example, this listcomp combines the elements of two lists if they are not equal:

>>> [(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]
[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]

List comprehension只有for和if。

官方还说,使用List Comprehension创建list,没有副作用,即在创建完之后,不会有一些变量还占用这内存。

本文链接:http://www.maixj.net/ict/list-comprehensions-17972
云上小悟 麦新杰(QQ:1093023102)

相关文章

评论是美德

《用List Comprehensions创建复杂列表》有2条评论

无力满足评论实名制,评论对非实名注册用户关闭,有事QQ:1093023102.

  • 麦新杰

    需要理解的List创建方式。 [ ]

  • 麦新杰

    List Comprehension = listcomp [ ]


前一篇:
后一篇:

栏目精选

云上小悟,麦新杰的独立博客

Ctrl+D 收藏本页

栏目

AD

ppdai

©Copyright 麦新杰 Since 2014 云上小悟独立博客版权所有 备案号:苏ICP备14045477号-1。云上小悟网站部分内容来源于网络,转载目的是为了整合信息,收藏学习,服务大家,有些转载内容也难以判断是否有侵权问题,如果侵犯了您的权益,请及时联系站长,我会立即删除。

网站二维码
go to top