2014-11-22 54 views
1

我想使用堆棧來顛倒順序,如果j =「這是句子」,所以輸出將是「句子是這樣的」來做到這一點,我試着把它放在棧,然後彈出它們像顛倒python使用堆棧中的單詞的順序

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

然後彈出它作爲

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

但什麼stack.push(j.split(」「))它把整個句子作爲單一實體堆棧像

[['this','is','a','sentence']]

,因此當我彈出它它給人造成

['this','is','a','sentence']

意味着什麼在nutshell.so都顛倒我應該如何分割,推動這個詞在棧,這樣我可以扭轉詞的順序。

回答

2

stack.push將給定的元素/參數放置在堆棧的t 上。對於你來說,元素/參數是整個列表。您需要分別推送列表中的每個元素。因此,更換:

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

由:

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

首先stack.push的(j.split(」「))犯規返回splited話。它返回一個帶有拼寫單詞的對象。因此,當你將j.split('')推入堆棧時,它實際上會將所有單詞作爲一個對象來推送。最後,當你加入時它返回最後一個條目,那就是對象['this','是','a','句子']。

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

在代碼中,您會發現遍歷對象並將每個單詞推入堆棧。然後只需簡單地彈出每個單詞。

+0

Thanx此解決方案也有幫助 – 2014-11-22 19:04:05

0

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

Python不考慮拆分爲參數列表中返回的列表中,除非你明確指定使用星號。否則,它會簡單地推棧上的列表

+0

它沒有工作它給了一個類型錯誤:push()需要2個參數(給出4) – 2014-11-22 19:10:21

+0

嗯,你是對的。我的錯。在這種情況下,您需要像上面所說的那樣一個一個地反覆推送它。 – AllwinP 2014-11-23 04:20:24