|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
class CountList:
i = -1
def __init__(self, *args):
self.value = [x for x in args]
self.count = {}.fromkeys(range(len(args)), 0)
def __len__(self):
return len(self.value)
def __getitem__(self, key):
self.count[key] += 1
return self.value[key]
def __repr__(self):
return repr(self.value)
def __setitem__(self, key, value):
if key < 0:
key = len(self.value) + key
if key >= len(self.value):
print('index error')
else:
self.value[key] = value
self.count[key] = 0
def __delitem__(self, key):
if key < 0:
key = len(self.value) + key
self._positive_remove(key)
def _positive_remove(self, key):
if key > len(self.value):
print('index error')
elif key + 1 == len(self.value):
del self.count[key]
self.value = self.value[:-1]
else:
dict_new = self.count.copy()
for i in range(key, len(self.value)):
if i < len(self.value)-1:
dict_new = dict_new[i+1]
self.count.update(dict_new)
del self.count[len(self.value)-1]
self.value = self.value[:key] + self.value[key + 1:]
def append(self, args):
self.count[len(self.value)] = 0
self.value += [args]
def pop(self, key=-1):
pop_value = self.value[key]
self.__delitem__(key)
return pop_value
def remove(self, item):
try:
key = self.value.index(item)
except IndexError:
print('index error')
else:
self.__delitem__(key)
def insert(self, key, obj):
self.value.insert(key, obj)
new_dict = {}.fromkeys(range(len(self.value)), 0)
if key < len(self.value):
for i in range(key):
new_dict = self.count
for i in range(key+1, len(self.value)):
new_dict = self.count[i-1]
self.count.update(new_dict)
else:
key = len(self.value)-1
self.count[key] = 0
def clear(self):
self.value.clear()
self.count.clear()
def reverse(self):
self.value.reverse()
new_dict = {}
for i in range(len(self.value)):
new_dict = self.count[len(self.value)-i-1]
self.count.update(new_dict)
def extend(self, seq):
self.value.extend(seq)
self.count[len(self.value)-1] = 0
def __iter__(self):
return self
def __next__(self):
self.i += 1
try:
a = self.value[1] # 试验能否正常读取元素
value = self.value[self.i]
print(value, a) # 测试value的值是否被正常赋值
except IndexError:
raise StopIteration
else:
return value
上面是源代码,《零基础入门学习Python》048的练习。__next__的返回值出错了,前面的value是正常赋值的,元素读取也正常,求助各位大佬
|
|