提问人:SPACE GHOST 提问时间:10/30/2023 最后编辑:blhsingSPACE GHOST 更新时间:10/30/2023 访问量:40
Python 动态数组列表
Python Dynamic array List
问:
# Writing logic for extend function
def extend(self, *ArrObj):
# Resize
ArrObjSize = ArrObj.__len__()
if self.n == self.size:
# Resize
self.__resize(self.size + ArrObjSize)
# Copying content of ArrObj to self.A
for i in range(self.n, self.n + ArrObjSize):
for j in range(ArrObjSize):
item = ArrObj.__getitem__(j)
self.append(item)
return self.__str__()
我得到一个嵌套列表作为输出:
[69,100,Brenda,Kaley,[89,99,67,78,101]]
预期输出:
[69,100,Brenda,Kaley,89,99,67,78,101]
答:
1赞
blhsing
10/30/2023
#1
通过在参数列表中使用 before 解包运算符:*
ArrObj
def extend(self, *ArrObj):
从那时起作为参数传入的所有值都作为值的元组分配给 ,因此当您将列表作为参数传递给方法时,该 将成为您传入的列表的元组,而不仅仅是您传入的列表,然后当您遍历元组时,元组中的列表将作为一个整体追加到输出中。ArrObj
ArrObj
您的代码可以通过创建常规参数来工作:ArrObj
def extend(self, ArrObj):
另请注意,您可以使用以下模式进行迭代,而无需使用索引:ArrObj
for item in ArrObj:
self.append(item)
评论
1赞
JohnyCapo
10/30/2023
完全同意。此外,通过列表的迭代是一回事,但迭代中的迭代是 5x5(ArrObj 中的新项目)会放大内容两次。现在他不是 5 个项目,而是 25 个项目......并且索引 i 从未使用过。所以迭代只是打破了这里的逻辑。
评论