<p>我一直在想一个对列表转换有用的类。
以下是我当前的实现:</p>
<pre><code>class ListTransform(object):
"""Specs: stores original list + transformations.
Transformations are stored in a list.
Every transformation is a func call, with
one parameter, transformations are done in place.
"""
def __init__(self, _list):
self.orig_list = _list
self.reset()
def addtransform(self,t):
self.transforms.append(t)
def reset(self, ts = []):
self.transforms = ts
def getresult(self):
li = self.orig_list[:] # start from a copy from the original
# call all the in-place transform functions in order
for transform in self.transforms:
transform(li)
return li
def pick_transform(pickindexes):
"""Only includes elements with specific indexes
"""
def pt(li):
newli = []
for idx in pickindexes:
newli.append(li[idx])
del li[:] # clear all the elements
li.extend(newli)
return pt
def map_transform(fn_for_every_element):
"""Creates a transformation, which will call a specific
function for every element in a list
"""
def mt(li):
newli = map(fn_for_every_element, li)
del li[:] # clear
li.extend(newli)
return mt
# example:
# the object which stores the original list and the transformations
li = ListTransform([0,10,20,30,40,50,60,70,80,90])
# transformations
li.addtransform(map_transform(lambda x: x + (x/10)))
li.addtransform(pick_transform([5,6,7]))
# getting result, prints 55, 66, 77
print li.getresult()
</code></pre>
<p>这很管用,然而,以不符合标准的方式实施某件事的感觉困扰着我。在</p>
<p><strong>在这个实现中,您将使用哪些Python特性,我没有使用过?你会如何改进这门课的整体设计/理念?您将如何改进代码?</strong></p>
<p><strong>而且,由于重新发明轮子感觉很尴尬:什么是取代这个类的标准工具?</strong></p>
<h2>谢谢</h2>