繁体   English   中英

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

[英]Reverse the order of words in python using stack

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

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

然后将其弹出

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

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

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

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

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

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

stack.push将给定的元素/参数放在堆栈的 t op上 对于你的情况,元素/参数是整个列表。 你需要单独推送列表中的每个元素。 所以,替换:

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

通过:

for i in j.split():
    stack.push(i)

首先,stack.push(j.split(''))不会返回分裂的单词。 它返回一个带有分裂单词的对象。 因此,当您在堆栈中推送j.split('')时,它实际上将所有单词作为对象推送。 最后当你加油时它会返回最后一个条目,那就是对象['this','is','a','sentence']。

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()

在代码中,您将找到遍历对象并将每个单词推入堆栈。 然后只需简单地弹出每个单词。

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

除非您使用星号明确指定,否则Python不会将split返回的列表视为参数列表。 否则它只会在堆栈上推送一个列表

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM