列表是一种重要的数据接口,类似于其他语言中的数组。主要功能有切片、索引、引用。下面来说一下详细概念。
列表的一些特性
- 索引
索引很简单,很类似之前的字符串操作
list = [1,2,3,4,5,6,7]
list[0] // 1 通过一个索引获取数值
- 切片
list[0:3] // [1,2,3] 获取索引0到3之间的数值
list[1:] //[2,3,4,5,6,7]从索引1开始,获取所有数值
- 引用
定义一个变量a,然后b = a ,如果a发生修改,则b也会相应发生修改,因为b只是引用了a的地址,区别与copy.
>>> a = [1,2,3]
>>> b = a
>>> a[0] = 4 //将1改成4
>>> a
[4, 2, 3]
>>> b
[4, 2, 3]
>>>
#可以使用id方法查看列表的id号(内存地址)
>>> id(a)
4310247688
>>> id(b)
4310247688
#其中的is方法就是使用id作为判断条件的
>>> a is b
True
- 拷贝
拷贝和引用写起来差不多
>>> a = [1,2,3]
>>> a_copy = a[:]
>>> a
[1, 2, 3]
>>> a_copy
[1, 2, 3]
>>> id(a_copy)
4310245672 // 两处的id值已经不一致了
>>> id(a)
4310247184 //
>>>
列表的常用操作
- append 向列表最后添加一个值
a.append(4) //[1, 2, 3, 4, 2]
- pop 弹出最后一个值并删除
a.pop() //2
print (a) //[1, 2, 3, 4]
- sort 按从小到大的顺序排序
>>> a
[1, 2, 3, 4] //初始值
>>> a.append(0) //追加0到最后
>>> a
[1, 2, 3, 4, 0] //现在a的值
>>> a.sort() //排序
>>> a //输出排序后的值
[0, 1, 2, 3, 4]
- reverse,反向排序
>>> a
[0, 1, 2, 3, 4] //默认
>>> a.reverse() //反向排序
>>> a
[4, 3, 2, 1, 0] //反向排序后的数值
>>> a.reverse() //再次反向排序
>>> a
[0, 1, 2, 3, 4] //排序后的值
>>>
- del 删除一个元素,参数为键值
>>> a
[0, 1, 2, 3, 4] //默认值
>>> del a[0] //删除下表为0的元素
>>> a
[1, 2, 3, 4] //删除后的结果
>>>
- 向列表中加入多个元素 "+"
>>> a
[1, 2, 3, 4]
>>> a + [2,2,2]
[1, 2, 3, 4, 2, 2, 2]
>>>
- 列表重复 "*"
将现有列表重复N次
>>> a
[1, 2, 3, 4]
>>> a * 2
[1, 2, 3, 4, 1, 2, 3, 4]
>>> a * 3
[1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]
- count 判断列表中元素的总数
>>> a
[1, 2, 3, 4]
>>> a.count(5) //a只有4个元素,返回0(false)
>>> a.count(4) //a有4个元素,返回1(true)
1
>>>
- 列表转字符串
#如果列表中都是字符串的话可以使用join
list = ['a','c','b']
#字符串之间以,分割,也可以改为其他符号
",".join(list)
总结
list可以直接通过修改下标的方式修改值,所以列表是可变的序列,区分与元组。list包含了很多有用方法,以及快速添加的 + * 符号.list除了可以通过索引获取值外,还可以通过切片的形式获取区间值。需要注意的,要区分列表的引用和拷贝,引用是引用了相同的地址,其中一个做出修改,所有基于此引用的列表都会发生改变。拷贝是从当前列表完全拷贝出一份新的列表,地址是不一样的。这点可以通过id()方法来校验.