【发布时间】:2012-02-22 01:22:18
【问题描述】:
加入列表:
>>> ''.join([ str(_) for _ in xrange(10) ])
'0123456789'
join 必须采用可迭代对象。
显然,join 的参数是[ str(_) for _ in xrange(10) ],它是一个list comprehension。
看看这个:
>>>''.join( str(_) for _ in xrange(10) )
'0123456789'
现在,join 的参数只是str(_) for _ in xrange(10),没有[],但结果是一样的。
为什么? str(_) for _ in xrange(10) 是否也生成列表或可迭代对象?
【问题讨论】:
-
我认为
join很可能是用 C 编写的,因此运行速度比列表理解要快得多...测试时间! -
显然,我完全错误地阅读了您的问题。它似乎正在为我返回一个生成器......
-
请注意:
_没有特殊含义,它是一个常规变量名。它通常用作一次性名称,但事实并非如此(您正在使用变量)。我会避免在代码中使用它(至少以这种方式)。