読者です 読者をやめる 読者になる 読者になる

Pythonに思うこと

Python の map filter をRubyのようにメソッドとして使いたい

class myList(list):
  def puts(self):
    print self
    return self

  def map(self,f):
    return myList(map(f,self))

  def filter(self,f):
    return myList(filter(f,self))

  def join(self,s=" "):
    return s.join(self.map(lambda x:str(x)))    

  def sort(self,f=lambda x:x):
    return myList(sorted(self,key=f))


a = myList(range(1,3+1)).puts()
#[1, 2, 3]

a.map(lambda x:x*2).puts()
#[2, 4, 6]

a.filter(lambda x:x%2==1).puts()
# [1, 3]

a.sort(lambda x:-x).puts()
# [3, 2, 1]

print a.map(lambda x:x+1).join(", ")
#2, 3, 4