Python中不带[]的列表理解

加入列表:

>>> ''.join([ str(_) for _ in xrange(10) ])

'0123456789'

join 必须采取迭代。

显然,join的论点是[ str(_) for _ in xrange(10) ],这是一个列表理解。

看这个:

>>>''.join( str(_) for _ in xrange(10) )

'0123456789'

现在,join的参数为just str(_) for _ in xrange(10),no [],但结果相同。

为什么?是否str(_) for _ in xrange(10)还会产生列表或可迭代项?

回答:

>>>''.join( str(_) for _ in xrange(10) )

这称为生成器表达式,并在PEP 289中进行了说明。

生成器表达式和列表理解之间的主要区别在于前者不在内存中创建列表。

请注意,还有第三种编写表达式的方法:

''.join(map(str, xrange(10)))

以上是 Python中不带[]的列表理解 的全部内容, 来源链接: utcz.com/qa/414571.html

回到顶部