昨日、このサイトから次のことができることを知りました。
class Seq(object):
def __init__(self, seq):
self.seq = seq
def __repr__(self):
return repr(self.seq)
def __str__(self):
return str(self.seq)
def all(self):
return Seq(self.seq[:])
def head(self, count):
return Seq(self.seq[:count])
def tail(self, count):
return Seq(self.seq[-count:])
def odd(self):
return Seq(self.seq[1::2])
def even(self):
return Seq(self.seq[::2])
def reverse(self):
return Seq(self.seq[::-1])
>>> s = Seq(range(0, 100))
>>> print s.head(10).odd().even().reverse()
[9, 5, 1]
クラス Seq 内のこれらのシーケンス メソッド チェーンの可能な組み合わせを列挙したいと思います。
itertools.product([s.head,s.odd,s.even,s.reverse], repeat=4)
# may not just limited those 4 functions
itertools.product()
の使い方1)。呼び出し可能な関数チェーン リストを生成しますか? ちょうどこのような:
foo = s.head().odd().even().reverse()
2)。eval() 可能なチェーン文字列を生成し、後で ascii ファイルまたは eval() に保存するか、ログの目的で保存できますか?
はパラメーターを受け入れることができ
head()
、はその必要はありません。たとえば、head() と tail() のパラメーターはリストから取得できます。tail()
even()
odd()
head_lmt = [10,20,30] tail_lmt = [30,40,50] foo = s.head().odd().tail().reverse() ^------------------------------------head_lmt 10 or 20 or 30 ^-----------------------tail_lmt 30 or 40 or 50
私のQ1が可能であれば、それらのパラメーターを呼び出し可能なリストとeval()可能な文字列に入力するにはどうすればよいですか?より具体的な呼び出し可能なリストとeval()可能な文字列を生成するにはどうすればよいですか?
ありがとう!