本文为博主原创文章,未经博主允许不得转载。
list元素添加
常用的添加方式有三种方法:append()、extend()和insert()
append()主要是在list的末尾添加元素,它的参数只有一个,例如:
>>> list1=[1,2,3]
>>> list1
[1, 2, 3]
>>> list1.append(4)
>>> list1
[1, 2, 3, 4]
>>> list1.append([5,6])
>>> list1
[1, 2, 3, 4, [5, 6]]
>>> list2=[5,6]
>>> list1.append(list2)
>>> list1
[1, 2, 3, 4, [5, 6], [5, 6]]
从上面代码可以发现,append()不能同时添加多个元素,若要添加多个则要使用extend(),它的参数是一个列表:
>>> list2.extend([7,8])
>>> list2
[5, 6, 7, 8]
>>> list3=[9,10]
>>> list2.extend(list3)
>>> list2
[5, 6, 7, 8, 9, 10]
此外list还支持如下相加方式:
>>> list4=list3+list2
>>> list4
[9, 10, 5, 6, 7, 8, 9, 10]
insert()方法有两个参数:第一个参数代表list中的位置,第二个参数是在这位置插入一个元素:
>>> list4.insert(0,8)
>>> list4
[8, 9, 10, 5, 6, 7, 8, 9, 10]
list元素访问
这个和C语言的元素范围一样可以使用list名加[index],index为元素索引。
list元素删除
这里介绍四种方法:remove()、del、pop()和clear()
remove()使用不需要知道元素位置,只需知道该元素存在即可,例如:
>>> list5=[1,2,3,4,5]
>>> list5.remove(4)
>>> list5
[1, 2, 3, 5]
del不是list所具有的方法,它属于Python中的关键字,它的使用不需要加括号,即采用语句的形式,它既可以删除指定位置的元素,又可删除指定范围的元素,还可以删除整个list,例如:
>>> list6=[1,2,3,4,5,6,7,8]
>>> del list6[3]
>>> list6
[1, 2, 3, 5, 6, 7, 8]
>>> del list6[2:4]
>>> list6
[1, 2, 6, 7, 8]
>>> del list6
>>> list6
Traceback (most recent call last):
File "<pyshell#18>", line 1, in <module>
list6
NameError: name 'list6' is not defined
从上面代码可以看到删除范围时不包括指定的右边范围的数。
pop()意味着“弹出”,即弹出一个元素,这个元素可以赋值给其他变量,它的用法有两种,不加参数的情况下弹出最末位元素,带参数的指定“弹出”索引位置,例如:
>>> list7=[1,2,3,4,5]
>>> list7.pop(3)
4
>>> list7
[1, 2, 3, 5]
>>> a=list7.pop()
>>> a
5
>>> list7
[1, 2, 3]
意味着清除整个list的元素,它不带参数,例如:>>> list7.clear()
>>> list7
[]
list分片
它的语法格式如下:
[start(optional):stop(optional):step(optional)] Start -> 起始位置索引(默认为0) Stop -> 末尾位置索引(不能超过list长度) Step -> 步长选择,默认为1.
下面看例子:
>>> list8=[1,2,3,4,5,6,7,8]
>>> list8[1:3]
[2, 3]
>>> list8[1:7:2]
[2, 4, 6]
>>> list8[:2]
[1, 2]
>>> list8[3:]
[4, 5, 6, 7, 8]
>>> list8[:]
[1, 2, 3, 4, 5, 6, 7, 8]
当Stop位为负数时,此时Stop位等效为list长度,例如:
>>> list8[3:-1]
[4, 5, 6, 7]
当步长为负数时会如何呢?请看例子:
>>> list8[2:7:-1]
[]
>>> list8[7:2:-1]
[8, 7, 6, 5, 4]
>>> list8[7:5:-1]
[8, 7]
>>> list8[7:5:-2]
[8]
>>> list8[7:2:-2]
[8, 6, 4]
从例子可以看到步长为负数时不管只要起始位置大于末尾位置,则不够起始索引,直接从最末位分片。