我昨天刚刚从这个网站了解到我可以:
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()able 链字符串,然后我可以稍后存储在 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()-able 字符串中,也就是生成更具体的可调用列表和 eval()-able 字符串?
谢谢!