共计 1437 个字符,预计需要花费 4 分钟才能阅读完成。
列表是一种重要的数据接口,类似于其他语言中的数组。主要功能有切片、索引、引用。下面来说一下详细概念。
列表的一些特性
- 索引
索引很简单,很类似之前的字符串操作
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()方法来校验.
正文完