2017-04-19 169 views
0
pizzas = ["hawai","salame","vegetable","capriciosa","new york"] 
for pizza in pizzas: 
    print("I like " + pizza.title() + " pizza!") 
print("\n" + "The first three pizzas in the list are: " + str(pizzas[0:3])) 
print("\n" + "The last three pizzas in the list are: " + str(pizzas[-1:-3])) 

最後三個項目的列表中,我得到:打印在Python

I like Hawai pizza! 
I like Salame pizza! 
I like Vegetable pizza! 
I like Capriciosa pizza! 
I like New York pizza! 

The first three pizzas in the list are: ['hawai', 'salame', 'vegetable'] 

The last three pizzas in the list are: [] 

,我很困惑。是不是-1表示列表中的最後一個元素?我索引[start:stop]所以不應該打印我的最後3個項目?我究竟做錯了什麼 ?

+5

你需要的是'比薩餅[ -3:]' – JBernardo

回答

4

您應該使用pizzas[-3:]來代替,以便您的start是列表末尾的第三個元素,而您的end是列表的最後一個。

pizzas = ["hawai","salame","vegetable","capriciosa","new york"] 

for pizza in pizzas: 
    print("I like " + pizza.title() + " pizza!") 

print("\nThe first three pizzas in the list are: " + str(pizzas[:3])) 
print("\nThe last three pizzas in the list are: " + str(pizzas[-3:])) 
+0

謝謝你們倆。有沒有特定的原因,爲什麼它不按我寫的方式工作? – adam86

+2

是;如果你從索引'-1'開始並以'-3'結尾,你的'start'值實際上比'end'更大(在字符串的後面)。切片時,「開始」應該總是小於「結束」。另一個問題是,即使顛倒這兩個指數,並使用'披薩[-3:-1]',以'-1'結尾,實際上不會包含最後一項。 「開始」索引是「包含」,而「結束」是「獨佔」。幸運的是,Python有一個直到列表最後的簡寫,這只是在切片時省略「end」參數。你可以用'start'做同樣的事情,並且默認爲零。 – gyre

3

默認步驟是1,所以從-1到-3,步驟爲1返回空片。你可以明確地指示步驟爲-1,但這種反轉項目的順序:

>>> pizzas[-1:-3:-1] 
['new york', 'capriciosa'] # -3 excluded 

但是,要獲得最後三個項目,你要的是pizza[-3:]

+0

真棒:)這回答我的兩個問題!謝謝。 – adam86