我正在尝试在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)
答案 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())