mirror of https://github.com/TwoWater/Python
57 lines
1.3 KiB
Python
57 lines
1.3 KiB
Python
![]() |
#!/usr/bin/env python3
|
|||
|
# -*- coding: UTF-8 -*-
|
|||
|
|
|||
|
class FunctionalList:
|
|||
|
''' 实现了内置类型list的功能,并丰富了一些其他方法: head, tail, init, last, drop, take '''
|
|||
|
|
|||
|
def __init__(self, values=None):
|
|||
|
if values is None:
|
|||
|
self.values = []
|
|||
|
else:
|
|||
|
self.values = values
|
|||
|
|
|||
|
def __len__(self):
|
|||
|
return len(self.values)
|
|||
|
|
|||
|
def __getitem__(self, key):
|
|||
|
return self.values[key]
|
|||
|
|
|||
|
def __setitem__(self, key, value):
|
|||
|
self.values[key] = value
|
|||
|
|
|||
|
def __delitem__(self, key):
|
|||
|
del self.values[key]
|
|||
|
|
|||
|
def __iter__(self):
|
|||
|
return iter(self.values)
|
|||
|
|
|||
|
def __reversed__(self):
|
|||
|
return FunctionalList(reversed(self.values))
|
|||
|
|
|||
|
def append(self, value):
|
|||
|
self.values.append(value)
|
|||
|
|
|||
|
def head(self):
|
|||
|
# 获取第一个元素
|
|||
|
return self.values[0]
|
|||
|
|
|||
|
def tail(self):
|
|||
|
# 获取第一个元素之后的所有元素
|
|||
|
return self.values[1:]
|
|||
|
|
|||
|
def init(self):
|
|||
|
# 获取最后一个元素之前的所有元素
|
|||
|
return self.values[:-1]
|
|||
|
|
|||
|
def last(self):
|
|||
|
# 获取最后一个元素
|
|||
|
return self.values[-1]
|
|||
|
|
|||
|
def drop(self, n):
|
|||
|
# 获取所有元素,除了前N个
|
|||
|
return self.values[n:]
|
|||
|
|
|||
|
def take(self, n):
|
|||
|
# 获取前N个元素
|
|||
|
return self.values[:n]
|