我如何通过使用另一个数组的pop方法填充一个空数组的元素来“替换”一个数组?

时间:2019-11-15 00:24:48

标签: python arrays list stack

我正在尝试在python中实现堆栈,并且正在尝试list数据结构。如果我想使用pop方法通过使用一个现有数组中的元素来“填充”一个空数组,我该怎么办?

# Implementing Stacks in Python through the given list structure


practiceStack = []

practiceStack.append(['HyunSoo', 'Shah'])
practiceStack.append('Jack')
practiceStack.append('Queen')
practiceStack.append(('Aces'))

# printing every element in the list/array
for i in practiceStack:
    print(i)

# since stacks are LIFO (last in first out) or FILO (first in last out), the pop method will remove the first thing we did

emptyArrayPop = []

这就是我尝试过的方法(通过使用for循环),并不断出现use integers not list错误

for i in practiceStack:
    emptyArrayPop[i].append(practiceStack.pop)

print(emptyArrayPop)

1 个答案:

答案 0 :(得分:1)

pop函数是一个函数-不是值。换句话说,practiceStack.pop是函数的指针(在花更多的时间在代码上之前,您几乎可以忽略它)。您可能需要这样做:

practiceStack.pop()

您还需要附加到列表;当使用append添加内容时,列表会自动在最后添加内容;您不需要提供索引。

进一步的解释: List.append方法将采用您传递给它的值,并将其添加到List的末尾。例如:

A = [1, 2, 3]
A.append(4)

A现在为[1, 2, 3, 4]。如果您尝试运行以下命令:

A[2].append(4)

...然后您实际上是在说:“将4附加到A中位置2的末尾”(在上述示例中,`A [2]设置为3;请记住, python列表从0开始计数,或者是“ 0-index”。)就像说“将4附加到3”。这没有道理;将一个整数附加到另一个整数并不意味着什么。

相反,您想附加到LIST本身;您无需指定职位。

不要混淆为列表中的位置分配值;如果要在列表的现有位置设置值,则可以使用=运算符:

>>> B = [1, 2, 3]
>>> B[2]
3
>>> B[2] = 4
>>> print(B)
[1, 2, 4]
>>> B.append(8)
>>> print(B)
[1, 2, 4, 8]

因此,要回答您的原始问题,您需要的行如下:

emptyArrayPop.append(practiceStack.pop())

(请注意,[i]已被删除)


[edit] 并不是唯一的问题,正如@selcuk指出的那样。

您还需要修正访问practiceStack列表中数据的方式,因为当您遍历时无法编辑列表(调用pop就地修改列表)它。

您将需要遍历列表的整数索引才能访问practiceStack的元素:

for i in range(len(practiceStack)):
    emptyArrayPop.append(practiceStack.pop())