Python 动态数组列表

Python Dynamic array List

提问人:SPACE GHOST 提问时间:10/30/2023 最后编辑:blhsingSPACE GHOST 更新时间:10/30/2023 访问量:40

问:

# 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]
python-3.x 列出 动态数组

评论

0赞 JohnyCapo 10/30/2023
对于第二个:周期。为什么你在 range(self....) 中使用 i,因为它从未使用过?只需在 ArrObj 中使用 item 并使用 item 作为列表中的值即可。您不必为它编制索引。
0赞 JohnyCapo 10/30/2023
就像现在一样,您实际上是在放大 ArrObj 的内容。假设您有 5 个新项目。你进入 5 次 i 循环 - >你附加 5 个项目 - > 25 个新项目而不是 5 个......
0赞 Community 10/30/2023
请澄清您的具体问题或提供其他详细信息以准确说明您的需求。正如目前所写的那样,很难确切地说出你在问什么。

答:

1赞 blhsing 10/30/2023 #1

通过在参数列表中使用 before 解包运算符:*ArrObj

def extend(self, *ArrObj):

从那时起作为参数传入的所有值都作为值的元组分配给 ,因此当您将列表作为参数传递给方法时,该 将成为您传入的列表的元组,而不仅仅是您传入的列表,然后当您遍历元组时,元组中的列表将作为一个整体追加到输出中。ArrObjArrObj

您的代码可以通过创建常规参数来工作:ArrObj

def extend(self, ArrObj):

另请注意,您可以使用以下模式进行迭代,而无需使用索引:ArrObj

for item in ArrObj:
    self.append(item)

评论

1赞 JohnyCapo 10/30/2023
完全同意。此外,通过列表的迭代是一回事,但迭代中的迭代是 5x5(ArrObj 中的新项目)会放大内容两次。现在他不是 5 个项目,而是 25 个项目......并且索引 i 从未使用过。所以迭代只是打破了这里的逻辑。