本文介绍了Python中不带[]的列表理解的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

加入列表:

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

join必须是可迭代的.

显然,join的参数是[ str(_) for _ in xrange(10) ],它是列表理解

Apparently, join's argument is [ str(_) for _ in xrange(10) ], and it's a list comprehension.

看看这个:

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

现在,join的参数只是str(_) for _ in xrange(10),没有[],但是结果是相同的.

Now, join's argument is just str(_) for _ in xrange(10), no [], but the result is the same.

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

Why? Does str(_) for _ in xrange(10) also produce a list or an iterable?

推荐答案

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

这称为生成器表达式,并在 PEP 289 a>.

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

The main difference between generator expressions and list comprehensions is that the former don't create the list in memory.

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

Note that there's a third way to write the expression:

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

这篇关于Python中不带[]的列表理解的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-06 09:44