使用堆栈反转python中单词的顺序

时间:2014-11-22 17:46:30

标签: python regex python-2.7 stack reverse

我正在尝试使用堆栈来反转顺序,就像j =“这是句子”所以输出将是“句子就是这样”来做这个我试着把它放在堆栈然后弹出它们像

stack.push(j.split(' '))    

然后将其弹出为

while not stack.is_empty()
  print stack.data.pop(),

但是stack.push(j.split(''))是什么把整个句子作为单个实体放在堆栈中

  

[[ '这个', '是', '一个', '句子']]

因此当我弹出它时会给出结果

  

[ '这个', '是', 'A', '句子']

意味着什么都没有反过来。所以我应该如何拆分并推动堆栈中的单词,以便我可以颠倒单词的顺序。

3 个答案:

答案 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返回的列表视为参数列表。否则它只会在堆栈上推送一个列表