用Python打印列表的最后三项

用Python打印列表的最后三项,python,Python,我得到: 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 pizza

我得到:

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

我很困惑。
-1
不是表示列表中的最后一个元素吗?我正在索引
[start:stop]
,所以它不应该打印我的最后3项吗?我做错了什么

你应该改用
pizzas[-3:]
,这样你的
start
就是列表末尾的第三个元素,而你的
end
就是列表的末尾

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,因此从-1到-3的步骤为1将返回一个空切片。您可以显式地将步骤指示为-1,但这会颠倒项目的顺序:

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:]))

然而,要得到最后三种食物,你需要的是
比萨饼[-3:]

你需要的是
比萨饼[-3:]
谢谢你们两位。有没有什么具体的原因使它不能像我写的那样工作;如果从索引
-1
开始并在
-3
结束,则
开始
值实际上大于
结束
。切片时,
start
应始终小于
end
。另一个问题是,即使颠倒这两个索引并使用
pizzas[-3:-1]
,以
-1
结尾,实际上也不包括最后一项。
start
索引是“inclusive”,而
end
是“exclusive”。幸运的是,Python有一个上移到列表末尾的速记,就是在切片时省略
end
参数。你可以用
start
做同样的事情,让它默认为零。真棒:)这回答了我的两个问题!非常感谢。
>>> pizzas[-1:-3:-1] 
['new york', 'capriciosa'] # -3 excluded