本文介绍了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中不带[]的列表理解的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!