#!/usr/bin/python
list2 = ['Bangalore','Cochin','Trivandrum','Auckland','Seoul','Los Angeles']
list2[5] = 'Hamilton'
list2.append('Sydney')
list2.append('San Jose')
list2.append('Amsterdam')
print "Cities = ",list2[0:(len(list2) - 1)]
print "Cities = ",list2[0:(len(list2))]
第一个print语句不打印列表中的最后一个元素。第二个print语句打印列表中的所有元素没有越界错误。从文档中我理解len()只返回元素的数量在列表中。那么为什么最后一个索引不是len(list) - 1
答案 0 :(得分:6)
列表切片从不会抛出越界错误:
list2[0:1234567890]
是合法的,
list2[-1:-1]
请注意,切片时,切片中不包含上限:
>>> list2[0:1]
['Bangalore']
>>> list2[0:0]
[]
所以切片list2[0:len(list2)]
包含与list2
完全相同的元素而不进行切片,但会返回一个新列表。
其他一些评论:
如果省略起始值,则默认为0
,如果省略,则结束值默认为列表的长度。因此,list2[0:len(list2)]
可以写为list2[:]
。
否定值从最后开始计算。 list2[:len(list2)-1]
可以写成list2[:-1]
。
答案 1 :(得分:3)
因为上限不包括在内。这意味着如果您的列表包含1个元素,则需要将1而不是0放入切片中。 list[0:0]
实际上是一个空切片,如果上限是包含的,则无法获得空切片。要仅使用第一个元素获得切片,您需要list[0:1]
代替。
(我使用的列表只包含1个元素,因为它非常简单易懂。显然它适用于包含更多项目的列表。)