-3
単純なカットアップメソッド(Wikipedia)をPythonで実行しようとしていますが、 。ここで私が持っているものです:Cut-upメソッドスクリプト - TypeError: 'generator'タイプのオブジェクトにlen()がありません
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
-lengthedチャンクに入力を分割し、それらのチャンクをシャッフル、バックそれらを一緒にスプライスし、それらをバック吐き出すことです。しかし、私はこのエラーを取得しておいてください。
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()
が発電を返すとは何かを持っていると思いますか?私はそれを修正するように見えることはできません。何かご意見は?
私は、この混乱しているジェネレータのすべてをかわすことにし、O(NlogN)オプションを使用することに決めました: 'ソートされた(スプリッタ(何、オーダー)、キー=ラムダk:ランダム。 'random'(' random.sample() ')のようなO(N)オプションがありますか?私はそれを繰り返すことを心配しています... – aparsnips
この答えはあなたにo(n)オプションを与えますか? – njzk2
ああ、今日私はばかなようです – aparsnips