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

问题描述

加入列表:

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

join 必须带一个可迭代对象.

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

看看这个:

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

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

为什么?str(_) for _ in xrange(10) 是否也生成列表或可迭代对象?

解决方案
>>>>''.join( str(_) for _ in xrange(10) )

这被称为生成器表达式,在PEP 289中有解释一>.

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

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

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

Joining a list:

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

join must take an iterable.

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

Look at this:

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

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

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

解决方案
>>>''.join( str(_) for _ in xrange(10) )

This is called a generator expression, and is explained in PEP 289.

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