簡體   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