Python 在list类上创建插入和弹出方法
我需要实现一个insert方法(insert(self,index,val)),它在index之前插入val,以及一个pop方法(pop(self)),它将mylist中的最后一个元素删除到mylist类中。行为应该与python中已有的方法相同 注意:对于insert方法,与已经完成的append方法类似,如果没有额外元素的空间,数组的容量应该加倍。pop方法应该返回从列表中删除的元素,而不放任何元素 在数组中的位置。如果在空列表上调用pop,则索引器 应该提出例外情况 到目前为止,我的代码是:Python 在list类上创建插入和弹出方法,python,python-3.x,class,Python,Python 3.x,Class,我需要实现一个insert方法(insert(self,index,val)),它在index之前插入val,以及一个pop方法(pop(self)),它将mylist中的最后一个元素删除到mylist类中。行为应该与python中已有的方法相同 注意:对于insert方法,与已经完成的append方法类似,如果没有额外元素的空间,数组的容量应该加倍。pop方法应该返回从列表中删除的元素,而不放任何元素 在数组中的位置。如果在空列表上调用pop,则索引器 应该提出例外情况 到目前为止,我的代码是
import ctypes # provides low-level arrays
def make_array(n):
return (n * ctypes.py_object)()
class MyList:
def __init__(self):
self.data = make_array(1)
self.capacity = 1
self.n = 0
def __len__(self):
return self.n
def append(self, val):
if(self.n == self.capacity):
self.resize(2 * self.capacity)
self.data[self.n] = val
self.n += 1
def resize(self, new_size):
new_array = make_array(new_size)
for ind in range(self.n):
new_array[ind] = self.data[ind]
self.data = new_array
self.capacity = new_size
def extend(self, other):
for elem in other:
self.append(elem)
def __getitem__(self, ind):
if not(0 <= ind <= self.n - 1):
raise IndexError('MyList index is out of range')
return self.data[ind]
def __setitem__(self, ind, val):
if not(0 <= ind <= self.n - 1):
raise IndexError('MyList index is out of range')
self.data[ind] = val
mylst1 = MyList()
for i in range(5):
mylst1.append(i)
import ctypes#提供低级数组
def make_阵列(n):
返回(n*ctypes.py_对象)()
类别列表:
定义初始化(自):
self.data=make_数组(1)
自容量=1
self.n=0
定义(自我):
返回自我
def附加(self,val):
如果(self.n==self.capacity):
自我调整大小(2*self.capacity)
self.data[self.n]=val
self.n+=1
def调整大小(自身、新大小):
新建数组=生成数组(新大小)
对于范围内的ind(self.n):
新数组[ind]=self.data[ind]
self.data=新数组
self.capacity=新尺寸
def扩展(自身、其他):
对于其他方面的elem:
self.append(elem)
定义获取项目(自我,索引):
如果不是(0考虑变量N可以根据需要而增长和收缩),则在追加时已经有n增长,因此对于POP函数考虑设置最后一个索引的值(在这种情况下是N)。设置为“无”,并从n中减去1。您还可以使用n来帮助查找抛出索引器的时间。对于insert,您首先需要检查容量,以确定当前数组上是否有足够的空间来放置另一个值。该函数与追加和调整大小的操作类似,即检查大小并使用多个值数组和在循环感谢中设置数据,我会考虑将最后一个索引设置为你建议的。米迦勒,它是你将要设置为空的索引的值。不是索引本身。索引是索引-1,考虑变量N可以根据需要而增长和收缩。或者POP函数考虑设置最后一个索引的值(在这种情况下是N)设置为“无”,并从n中减去1。您还可以使用n来帮助查找抛出索引器的时间。对于insert,您首先需要检查容量,以确定当前数组上是否有足够的空间来放置另一个值。该函数与追加和调整大小的操作类似,即检查大小并使用多个值数组和在循环感谢中设置数据时,我会考虑将最后一个索引设置为“没有”。米迦勒,它是将要设置为空的索引的值。而不是索引本身。索引将是索引- 1。