一、列表简介
列表相比于字符串,不仅可以储存不同的数据类型,而且可以储存大量数据,32位python的限制是 536870912 个元素,64位python的限制是 1152921504606846975 个元素。
而且列表是有序的,有索引值,可切片,方便取值。
- 列表是用[ ]来表示,用,隔开“,”是一个有序的数据结构,是从下标0开始的。
- 列表的可以由各种元素组合(数字,字符串,bool类型),但是在实际开发中,都是使用同一种数据类型的。
- 列表还可以嵌套其他的数据结构(列表,字典,元祖等)
二、定义列表
>>> my_list.
my_list.append( my_list.count( my_list.insert( my_list.reverse(
my_list.clear( my_list.extend( my_list.pop( my_list.sort(
my_list.copy( my_list.index( my_list.remove(
2.1 创建列表的4种方式
1.直接创建
>>> my_list1 = [1, 2, 3, 4]
2.使用列表类的方法
>>> my_list2 = list([1,2,3,4])
3.使用列表进行转换(下面是把一个数组转换为列表)
>>> my_list3 = list((1,2,3,4))
4.列表推导式
>>> my_list4 = [i for i in range(1000) if i %2 == 0]
2.2 列表的运算符重载
对于运算符重载,是类中的特殊方法。 相对应的数学表现方式,映射到 对于的方法。
比如 。 list_a + list_b 就会映射到__add__方法。这些都是代码定义的,我们在后面也可以实现这些东西。查看list的帮助文档,就会出现下面的方法
__add__ a+b
__iadd__ a+=b
__mul__ a*b
__imul__ a*=b
str_list = ['c'*3] # ['ccc']
sr_list = ['c']*3 # ['c','c','c']
str_list = [['c']*3] # [['c','c','c']]
三、列表的索引与切片
3.1 索引
列表是可序的,下标从0开始。可支持正向和反向取值:
正向:第一个为0,第二个为1
反向:最后一个-1,倒数第二个-2
>>> list1[0] 'a' >>> list1[2] 'c' >>> list1[-1] #最后一个 'av' >>> list1[-2] #倒数第二个 'd'
3.2 切片
L[start:[end:step]] 藏头露尾: 包含start 不包括end
step支持负数。当step是负数的时候,start是靠右边的index,end是靠左边的index。
li[0:3] #打印前3个索引的值 li[:3] #同上 li[3:] #打印第三个到末尾 li[::2] #从头到尾,跳着打印 li[::-1] #倒序打印 li[-2::-2] #倒序从倒数第二个向前取值,每隔2个取一次值 li[5:0:-2] #倒序从索引5向前取值,每隔2个取一次值
四 、列表的增、删、改、查
4.1 增
append、insert、extend学会看帮助文档:
append(...)
L.append(object) -> None -- append object to end
追加一个元素到末尾,返回值为None
str_list.append('f')
insert(...)
L.insert(index, object) -- insert object before index
insert(index, obj)插入元素,index为要插入的索引位置,obj为插入的值。
str_list.insert(2,'g')
extend(...)
L.extend(iterable) -> None -- extend list by appending elements from the iterable
extend(seq)在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)即迭代追加
a = [1,2,3]
b = ['a','b','v']
a.extend(b)
4.2 删除
方法1:pop
L.pop([index]) -> item -- remove and return item at index (default last).
Raises IndexError if list is empty or index is out of range.
>>> list1.pop() #无参数,删除最后一个
'av'
>>> list1.pop(3) #按照索引删除
'd'
方法2:remove
L.remove(value) -> None -- remove first occurrence of value.
Raises ValueError if the value is not present.
移除列表中某个值的第一个匹配项,无返回值.不存在则报错
>>> list1.remove('a')
方法3:del python内置函数
功能1: 删除整个列表 del list1
功能2:按照索引或切片删除
del list1[1]
del list1[1:3]
功能3:按照步长删元素
del list1[::2]
方法4:clear
删除列表的所有元素,无返回值
list1.clear()
4.3 修改
按照索引修改: a[1] ='b'
按照切片修改:a[1:3] =[1,2] 注意切片长度需要和后面列表的长度相等
4.4 查
查列表的长度:
1. list1.count()
2. len(list1)
使用索引和切片的方式查看:
查看上文的
根据value来找索引:
list1.index('hui')
五、其他方法
列表方法还剩下三个:sort ,reverse,copy
sort
>>> li = [2,5,23,21,4,1]
>>> li.sort() #默认排序是从小到大
>>> li
[1, 2, 4, 5, 21, 23]
=================================================
>>> li = [2,5,23,21,4,1]
>>> li.sort(reverse=True) #修改排序方式,变成从大到小
>>> li
[23, 21, 5, 4, 2, 1]
reverse
反向排序
>>> li = ['楼会',1,2,'娄'] >>> li.reverse() >>> li ['娄', 2, 1, '楼会']
========================
li[::-1] # 也可以实现反向排序
copy
浅拷贝
关于浅拷贝的内容后续会深入,这里暂时不介绍