1.负数索引从 list 的尾部开始向前计数来存取元素。任何一个非空的 list 最后一个元素总是 li[-1]。
>>> li = ["a", "b", "mpilgrim", "z", "example"]
>>>
li[-1]
'example'
>>> li[-3]
'mpilgrim'
可以这样理解:li[-n]
== li[len(li) - n]
2.list 的分片 (slice)
>>>
li
['a', 'b', 'mpilgrim', 'z', 'example']
>>> li[1:3]
['b', 'mpilgrim']
>>> li[1:-1]
['b', 'mpilgrim', 'z']
>>> li[0:3]
['a', 'b', 'mpilgrim']
从左向右阅读
list,第一个 slice 索引指定了您想要的第一个元素,第二个 slice 索引指定了第一个您不想要的元素。返回的值为在其间的每个元素。
如果左侧分片索引为
0,您可以将其省略,默认为 0。同样的,如果右侧分片索引是 list 的长度,可以将其省略。
3.果将两个分片索引全部省略,这将包括 list 的所有元素。但是与原始的名为 li 的 list 不同,它是一个新 list,恰好拥有与 li 一样的全部元素。
li[:] 是生成一个 list 完全拷贝的一个简写。
4.向 list 中增加元素
>>>
li
['a', 'b', 'mpilgrim', 'z', 'example']
>>> li.append("new")
>>> li
['a', 'b', 'mpilgrim', 'z', 'example', 'new']
>>> li.insert(2, "new")
>>> li
['a', 'b', 'new', 'mpilgrim', 'z', 'example', 'new']
>>> li.extend(["two", "elements"])
>>> li
['a', 'b', 'new', 'mpilgrim', 'z', 'example', 'new', 'two', 'elements']
5.extend
(扩展) 与 append (追加) 的差别
>>> li = ['a', 'b', 'c']
>>> li.extend(['d', 'e', 'f'])
>>> li
['a', 'b', 'c', 'd', 'e', 'f']
>>> len(li)
6
>>> li[-1]
'f'
>>> li = ['a', 'b', 'c']
>>> li.append(['d', 'e', 'f'])
>>> li
['a', 'b', 'c', ['d', 'e', 'f']
>>> len(li)
4
>>> li[-1]
['d', 'e', 'f']
5.在 list 中搜索
如果在 list 中没有找到值,Python 会引发一个异常。
这一点与大部分的语言截然不同,大部分语言会返回某个无效索引。
尽管这种处理可能令人讨厌,但它仍然是件好事,因为它说明您的程序会由于源代码的问题而崩溃,好于在后面当您使用无效索引而引起崩溃。
要测试一个值是否在 list 内,使用 in。如果值存在,它返回 True,否则返为 False 。
6. pop 是一个有趣的东西。它会做两件事:删除 list 的最后一个元素,然后返回删除元素的值。