在Python中打印列表的最后三个项目[重复]

Posted

技术标签:

【中文标题】在Python中打印列表的最后三个项目[重复]【英文标题】:Print the last three items of a list in Python [duplicate] 【发布时间】:2017-09-16 02:36:27 【问题描述】:
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]))

我明白了:

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 个项目吗?我究竟做错了什么 ?

【问题讨论】:

你需要的是pizzas[-3:] 【参考方案1】:

您应该改用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:]))

【讨论】:

谢谢你们俩。有什么具体原因导致它不像我写的那样工作吗? 是的;如果您从索引-1 开始并在-3 结束,您的start 值实际上大于end(在字符串中更远)。切片时,start 应始终小于 end。另一个问题是,即使反转这两个索引并使用pizzas[-3:-1],以-1 结尾实际上也不会包含最后一项。 start 索引是“包含的”,而end 是“排除的”。幸运的是,Python 有一个向上直到列表末尾的简写,即在切片时省略 end 参数。你可以用start 做同样的事情,让它默认为零。【参考方案2】:

默认步长为 1,因此从 -1 到 -3 步长为 1 会返回一个空切片。您可以将步骤明确指示为 -1,但这会颠倒项目的顺序:

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

但是,要获取最后三个项目,您想要的是pizza[-3:]

【讨论】:

太棒了 :) 这回答了我的两个问题!谢谢。

以上是关于在Python中打印列表的最后三个项目[重复]的主要内容,如果未能解决你的问题,请参考以下文章

从Python列表中的特定位置删除项目[重复]

以正确的方式python打印列表[重复]

如何删除一个list中最后一个元素

Python“for in”循环打印列表中的最后一项

Python实验二

python 列表删除元素问题?