class mylist:
class myiterator:
def __init__(self,lst):
self.data = lst
self.index = 0
def __next__(self):
return self.data
def __init__(self,iterable=()):
self.data = [x for x in iterable]
def append(self,v):
self.append(v)
def __repr__(self):
return "mylist(%s)" % self.data
def __iter__(self):
return mylist(self.data)
def __len__(self):
return len(self.data)
l = mylist("ABCD")
print(l)
l.append("E")
print(l)
for x in l:
print(x)
print("列表的长度是:",len(l))
#-------------------方法一--------------------
class myiterator: #创建迭代器
def __init__(self,lst):
self.data = lst
self.index = 0
def __next__(self):
if self.index >= len(self.data):
raise StopIteration #
r = self.data[self.index]
self.index += 1
return r
class mylist:
def __init__(self,iterable=()):
self.data = [x for x in iterable]
def append(self,v):
self.data.append(v)
def __repr__(self):
return "mylist(%s)" % self.data
def __len__(self):
return len(self.data)
def __iter__(self):
return myiterator(self.data)
l = mylist("ABCD")
print(l)
l.append("E")
print(l)
for x in l:
print(x)
print("列表的长度是:",len(l))
#-------------------方法二-----------------------------------
class mylist:
class myiterator: #创建迭代器
def __init__(self,lst):
self.data = lst
self.index = 0
def __next__(self):
if self.index >= len(self.data):
raise StopIteration #
r = self.data[self.index]
self.index += 1
return r
def __init__(self,iterable=()):
self.data = [x for x in iterable]
def append(self,v):
self.data.append(v)
def __repr__(self):
return "mylist(%s)" % self.data
def __len__(self):
return len(self.data)
def __iter__(self):
return mylist.myiterator(self.data)
l = mylist("ABCD")
print(l)
l.append("E")
print(l)
for x in l:
print(x)
---------------------------------------------------------------------------------------
#此示例示意一元运算符重载
class mylist:
def __init__(self,iterable=()):
self.data = [x for x in iterable]
def __repr__(self):
return "mylist(%s)" % self.data
def __neg__(self):
'''规则'''
# l = [-x for x in self.data]
l = (-x for x in self.data)
return mylist(l)
def __contains__(self,e):
return e in self.data
l1 = mylist([1,-2,3,-4,5])
l2 = -l1
print(l2)
#--------------------------------------------
if 3 in l2:
print("3在L里面")
else:
print("3不在L里面")
if 4 not in l1:
print("4不在L1内")
else:
print("4在l1内")
#--------------------------------
#此示例示意索引[]运算符重载
class mylist:
def __init__(self,iterable=()):
self.data = [x for x in iterable]
def __repr__(self):
return "mylist(%s)" % self.data
def __getitem__(self,i):
return self.data[i]
def __setitem__(self,i,val):
self.data[i] = val
l1 = mylist([1,-2,3,-4,5])
x = l1[0]
print(x)
l1[1] = 2
print(l1)
#-----------------------------------
#此示例示意索引[]运算符重载
class mylist:
def __init__(self,iterable=()):
self.data = [x for x in iterable]
def __repr__(self):
return "mylist(%s)" % self.data
def __getitem__(self,i):
if type(i) is slice:
print("您正在执行切片模式")
print("起始值是",i.start)
print("终止值是",i.stop)
print("步长值是",i.step)
return self.data[i]
l1 = mylist([1,-2,3,-4,5])
x = l1[1:8:2]
print(x)