推导式(List Comprehension)更多应用

2019年8月23日 / 14次阅读 / Last Modified 2019年9月3日
语法

Python的List Comprehension的使用是非常方便的,官方的文档有时会将其写成listcomp。不过,有一个概念上的误区,我在写此文之前也被误导了。listcomp不仅仅只是用来创建List对象,这里的list,只是序列的意思。我们还可以将其用来创建dict对象和set对象,tuple对象除外。

有人将List Comprehension翻译为Python推导式,我觉得这个意思还比较准确。后文listcomp和推导式这两个词混用哈。

用Python推导式创建dict对象

>>> d = {str(x):x for x in range(10)}
>>> d
{'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}
>>> type(d)
<class 'dict'>

使用大括号({}),用冒号(:)分隔数据,就是dict对象。这里就对推导式本身进行展开了,请参考本站专门介绍的问题。

用listcomp创建set对象

>>> s = {x for x in 'abcdefg'}
>>> s
{'f', 'a', 'b', 'g', 'e', 'd', 'c'}
>>> type(s)
<class 'set'>

为什么不能用Python推导式创建tuple?

因为用小括号(())括起来的,在Python的语法上有特殊含义,它们叫做生成式(generator)。

>>> t = (x for x in range(10))
>>> t
 at 0x7fe9cdc868b8>
>>> type(t)
<class 'generator'>

Python推导式,属于Python的语法糖(syntax sugar)。

-- EOF --

本文链接:https://www.pynote.net/archives/949

留言区

电子邮件地址不会被公开。 必填项已用*标注


前一篇:
后一篇:

More

麦新杰的Python笔记

Ctrl+D 收藏本页


©Copyright 麦新杰 Since 2019 Python笔记

go to top