[英]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.