python -mtimeit -s'xs=xrange(1000)' 'map(int,"1234567890")'
10000 loops, best of 3: 18.3 usec per loop
python -mtimeit -s'xs=xrange(1000)' '[int(x) for x in "1234567890"]'
100000 loops, best of 3: 20 usec per loop
随着lambda,map()变慢:
python -mtimeit -s'xs=xrange(1000)' '[x*10 for x in "1234567890"]'
100000 loops, best of 3: 6.11 usec per loop
python -mtimeit -s'xs=xrange(1000)' 'map(lambda x:x*10,"1234567890")'
100000 loops, best of 3: 11.2 usec per loop
map()
在某些情况下可能比使用列表理解快一些,在某些情况下,map比列表理解慢一些。使用内置函数时:
随着
lambda
,map()
变慢:但是,在python 3x中{}返回一个映射对象,即迭代器
来自the documentation for ^{}
int()
尝试将传递的内容转换为整数,并将引发一个ValueError
如果您尝试一些愚蠢的操作,例如:map()
将返回一个列表,该列表具有您要求它调用任何iterable的函数的返回值。如果您的函数不返回任何内容,那么您将得到一个None
s的列表,如下所示:这是做这种事情的短而有效的方法:
map
可以这样工作:基本上,它返回一个列表
L
,使得L
的第i个元素是计算iterable的第i个元素func
的结果。因此,对于
int
和一个int
s字符串,在for循环的每个迭代中,元素都是一个特定的字符,当给定给int
时,它返回为一个实际的int
。对这样的字符串调用map
的结果是一个列表,其元素对应于字符串中相应字符的int
ed值。所以是的,如果
L = "12345"
,那么map(int, L)
就是[int(x) for x in L]
的同义词希望这有帮助
相关问题 更多 >
编程相关推荐