Python map vs list comprehension

时间:2011-05-26 21:31:29

标签: python loops lambda

比较这些时,您认为哪种更直观/更容易阅读?

>>> [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 :(得分:5)

我更喜欢第一个,它有一个优势。你可以代替

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

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

并且有一个生成器而不是列表。在某些方面很棒。

答案 1 :(得分:4)

我更喜欢第一个,因为我更习惯它。进行大量函数式编程的人可能更喜欢第二种,因为它更适合它的思维方式。但第二个版本是复杂的。它可以简化为

map(ord,'some string')

更具可读性,使这个想法更加明显。

答案 2 :(得分:0)

我会使用:[ord(i) for i in 'some string']。使用带有lambda的map应该比使用列表推导慢得多。见Python List Comprehension Vs. Map我认为第一个也更具可读性。

答案 3 :(得分:0)

这似乎已被问及并回答before