我正在尝试在python中执行一个简单的切割方法(Wikipedia)脚本,但是我遇到了一些麻烦。这就是我所拥有的:
import random
def splitter(string, num):
pieces = string.split()
for i in xrange(0, len(pieces), num):
yield' '.join(pieces[i:i+num])
def cutup(what, order):
mixed = list(random.shuffle(splitter(what, order)))
for piece in mixed:
print piece + " "
cutup(range(1,100), 3)
这个想法是将输入分成num
- 加长的单词块,将这些块混合,将它们拼接在一起并将它们吐出来。但我一直收到这个错误:
Traceback (most recent call last):
File "cutup.py", line 15, in <module>
cutup(range(1,100), 3)
File "cutup.py", line 11, in cutup
mixed = list(random.shuffle(splitter(what, order)))
File "/usr/lib/python2.7/random.py", line 288, in shuffle
for i in reversed(xrange(1, len(x))):
TypeError: object of type 'generator' has no len()
我认为它与random.shuffle()
返回生成器有关?我似乎无法修复它。有什么想法吗?
答案 0 :(得分:0)
random.shuffle()
需要知道输入的时间长度(并尝试获取对象的长度)。生成器无法提供此功能,您必须将其具体化为列表:
lst = list(yielding(x))
random.shuffle(lst)
另外,请注意,random.shuffle
进行就地列表修改。
文档为here。