用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