python小技巧真的很多,而且有些还是导致BUG或模糊定义。这篇文章总结下,避免踩坑。
根据Python数据结构分类如下:
列表相关 一. 列表相关 1.1 超出索引不一定就报错这有点不可思议,超出列表索引一般都会报IndexError异常,如下:
>>> list = ['a', 'b', 'c', 'd', 'e'] >>> list[100] Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: list index out of range下面来个反常的:
>>> list[100:] [] >>> list[100:300] []奇怪了吧。 对于任何可迭代对象的切片操作超出索引不触发异常而是返回空对象(如列表则返回空列表,字符串则返回空字符串, 元祖则返回空元祖等)。 , 如下字符串演示:
>> "abcd"[100:200] '' >>> "abcd"[100] Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: string index out of range >>> (1,2,3)[100:200] () 这样理解或许更好些:索引返回一个项目, 如 list[n], 如果超出容器则触发异常,但切片返回容器的子容器而已,表示一个范围的对象,超出这个范围就返回空的容器。~更新中..
← Previous Post