Python的map与列表推导式

0 投票
4 回答
1448 浏览
提问于 2025-04-16 18:25

在比较这些代码时,你觉得哪一种更直观/更容易阅读呢?

>>> [ord(i) for i in 'some string']
[115, 111, 109, 101, 32, 115, 116, 114, 105, 110, 103]

>>> map(ord,'some string')
[115, 111, 109, 101, 32, 115, 116, 114, 105, 110, 103]

使用lambda/map的方式有什么好处吗?

4 个回答

0

我会使用:[ord(i) for i in 'some string']。使用带有lambda的map方法据说比使用列表推导式要慢很多。你可以看看这个链接:Python列表推导式与map的比较。我觉得第一个方法也更容易理解。

4

我更喜欢第一种写法,因为我更习惯这种方式。经常做函数式编程的人可能会更喜欢第二种写法,因为它更符合他们的思维方式。不过,第二种写法太复杂了。可以简化成

map(ord,'some string')

这样写要简单得多,读起来也更清晰,想表达的意思更明显。

5

我更喜欢第一个方法,这样做有个好处。你可以用

[ord(i) for i in 'some string']

来写

(ord(i) for i in 'some string')

,这样就能用生成器,而不是直接创建一个列表。在某些情况下,这样做非常不错。

撰写回答