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