1、创建列表
就像创建任何其他变量一样,创建列表也是要为它赋某个值,还可以创建一个空的列表:
newList = []
中括号中没有任何元素,不过一个空列表有什么用呢?很多情况下,我们无法提前知道列表中会有些什么,我们不知道其中会有多少元素,也不知道这些元素是什么,只知道将会用一个列表来保存这些内容。
2、向列表中增加元素
向列表中增加元素有3种方法:安排append()、extend()和insert()。
- append()向列表末尾增加一个元素。
- extend()向列表末尾增加多个元素。
- insert()在列表中的某个位置增加一个元素,不一定非得在列表末尾。
增加到列表末尾:append()
直接举例代码清单如下;
扩展列表:extend()
在列表末尾增加多个元素,代码清单如下:
注意extend()方法的圆括号中是一个列表,列表有一个中括号,所以对于extend(),可以同时有圆括号和中括号。
提供给extend()的列表中的所有内容都会增加到原来列表的末尾。
插入一个元素:insert()
insert()会在列表中的某个位置增加一个元素,可以指定希望将元素增加到列表的哪个位置:
索引是从0开始,所以最终是插在了第三个位置。
三种插入列表的区别:
列表中可以包含任何内容
列表可以包含Python能存储的任何类型的数据,这包括数字、字符串、对象,甚至可以包含其他的列表。并不要求列表中的元素是同种类型或同一种东西。例如;
my_list = [5,10,23,'hello',teacher,88]
3、从列表中获取元素
索引方法获取
可以按照元素的索引(index)号从列表中获取单个元素。列表索引从0开始,所以这个列表中的第一项就是letters[0]
列表“分片”
还可以使用索引从列表一次获取多个元素,这叫做列表分片(slicing)。
与for循环中的range()类似,分片获取元素时,会从第一个索引开始,不过在达到第二个索引之前停止。这是这个原因,例子中 只取了3项。要记住这一点,一种方法就是牢记取回的项数总是两个索引数之差。
关于分片列表,还有一个重要的问题:对列表分片时取回的是另一个列表,这个更小的列表称为愿列表的一个分片,原来的列表并没有改变,这个分片是原来列表的部分副本。下面看个例子:
特别注意:在第一种情况下,我们取回一个元素。在第二种情况下,我们取回的是包含这个元素的一个列表。这个差别很微妙,但肯定的是,在第一种情况下,使用了一个索引从列表中得到一个元素,第二种情况下则是使用分片记法来得到列表的一个单元素分片。
分片简写
使用分片时可以采用一些简写形式,如果想要的分片包括列表的开始部分,简写方式是使用冒号,后面是想要的元素个数,例如:
要得到列表末尾也可以用类似的记法:
如果没有放入任何数,而只有冒号,就可以得到整个列表:
分片就是建立原列表的副本,所以letters[:]会建立整个列表的副本。如果想对列表做些修改,但是同时还想保持原来的列表不做任何改变,使用这种分片就会很方便。
4、修改元素
可以使用索引来修改某个列表元素:
5、从列表删除元素
从列表中删除元素有三种方法:remove()、del和pop()。
使用remove()删除元素
remove()会从列表中删除选择的元素:
不需要知道这个元素在列表中的具体位置,只需要知道它确实在列表中(可以是任何位置)。至于怎样才能知道列表中是否包含某个元素,后面会介绍到。
用del删除
del允许利用索引从列比从列表中删除元素:
用pop()删除元素
pop()从列表中取到最后一个元素,可以为它指派一个变量,比如:
使用pop()时还可以提供一个索引:
括号里没有提供参数时,pop()会返回最后一个元素。并把它从列表中删除。如果在括号里放入一个数,pop(n)会给出这个索引位置上的元素,而且会把它从列表中删除。
6、搜索列表
在列表中有多个元素时,要查找这些元素,对列表通常有两种处理:
- 查找元素是否在列表中
- 查找元素在列表中的哪个位置
in 关键字
要找出某个元素是否在列表中,可以使用in关键字,比如:
‘a’in letters部分是一个布尔或逻辑表达式。如果a在这个列表中,它会返回值True,否则返回False。
查找索引
为了找出一个元素位于列表中的什么位置,可以使用index()方法,比如:
像remove()一样,如果在列表中没有找到这个值,index()会给出一个错误,所以最好结合使用in。
7、列表排序
列表是一种有顺序(ordered)的集合,这说明列表中的元素有某种顺序,每个元素都有一个位置,也就是它的索引。一旦以某种顺序将元素放在列表中,它们就会保持这种顺序,除非用insert()、append()、remove()或pop()改变列表。
sort()升序排序
要对列表排序,可以使用sort()方法。
sort()会自动按字母顺序对字符串从小到大排序,如果是数字,就按照数字顺序从小到大排序。重要的是,sort()是在原地修改列表,这说明它会改变提供的原始列表,而不是创建一个新的有序列表。
按逆序排序
reverse()函数
这种方法是使用了一个新的列表方法reverse(),它会把列表中元素的顺序倒过来。
向sort()增加一个参数,直接让它降序排序:
以上讨论的所有排序和逆置都会对原来的列表做出修改。这说明,原来的列表已经没有了。如果希望保留原来的顺序,而对列表的副本进行排序,可以使用分片记法建立副本,也就是与愿列表相等的另一个列表。
另一种排序方法sorted()
还有一种方法可以得到一个列表的有序副本而不会影响愿列表的顺序。Python提供了一个名为sorted()的函数可以实现这个功能:
8、元组--不可改变的列表
有些情况下可能希望列表可以改变,Python中有一个元组的类型,就属于不可改变的列表。建立元组:
my_tuple = ('red','green','blue')
这里使用了圆括号,而不是列表使用的中括号。由于元组是不可改变的,所以不能对元组完成排序,也不能追加和删除元素。一旦用一组元素创建一个元组,它就会一直保持不变。
9、双重列表:数据表
创建:
获取值: