我正在尝试使用堆栈来反转顺序,就像j =“这是句子”所以输出将是“句子就是这样”来做这个我试着把它放在堆栈然后弹出它们像
stack.push(j.split(' '))
然后将其弹出为
while not stack.is_empty()
print stack.data.pop(),
但是stack.push(j.split(''))是什么把整个句子作为单个实体放在堆栈中
[[ '这个', '是', '一个', '句子']]
因此当我弹出它时会给出结果
[ '这个', '是', 'A', '句子']
意味着什么都没有反过来。所以我应该如何拆分并推动堆栈中的单词,以便我可以颠倒单词的顺序。
答案 0 :(得分:2)
stack.push
将给定的元素/参数放在堆栈的操作上。对于你的情况,元素/参数是整个列表。你需要单独推送列表中的每个元素。所以,替换:
stack.push(j.split(' '))
由:
for i in j.split():
stack.push(i)
答案 1 :(得分:1)
首先,stack.push(j.split(''))不返回分裂的单词。它返回一个带有分裂单词的对象。因此,当您在堆栈中推送j.split('')时,它实际上将所有单词作为对象推送。最后,当你加油时,它返回最后一个条目,那就是对象['这个''''''句子& #39;]
class Stack():
def __init__(self):
self.items = []
def isEmpty(self):
return self.items == []
def push(self, item):
return self.items.append(item)
def pop(self):
return self.items.pop()
def getElements(self):
return self.items
def peek(self):
return self.items[len(self.items)-1]
def size(self):
return len(self.items)
j="this is sentence"
stack = Stack()
jj = j.split(' ')
for word in jj:
stack.push(word)
print stack.getElements()
print stack.peek() # shows you latest (last) value of array
print stack.pop()
在代码中,您将找到遍历对象并将每个单词推入堆栈。然后只需弹出每个单词。
答案 2 :(得分:0)
stack.push(*j.split(' '))
除非您使用星号明确指定,否则Python不会将split返回的列表视为参数列表。否则它只会在堆栈上推送一个列表