python2 学习笔记之 列表

25次阅读
没有评论

共计 1437 个字符,预计需要花费 4 分钟才能阅读完成。

列表是一种重要的数据接口,类似于其他语言中的数组。主要功能有切片、索引、引用。下面来说一下详细概念。

列表的一些特性

  1. 索引
    索引很简单,很类似之前的字符串操作
    list = [1,2,3,4,5,6,7]
    list[0] //  1  通过一个索引获取数值   
  1. 切片
    list[0:3] // [1,2,3] 获取索引 0 到 3 之间的数值
    list[1:] //[2,3,4,5,6,7]从索引 1 开始,获取所有数值
  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
  1. 拷贝
    拷贝和引用写起来差不多
>>> a = [1,2,3]
>>> a_copy = a[:]
>>> a
[1, 2, 3]
>>> a_copy
[1, 2, 3]
>>> id(a_copy)
4310245672 // 两处的 id 值已经不一致了
>>> id(a)
4310247184 //
>>>

列表的常用操作

  1. append 向列表最后添加一个值
a.append(4) //[1, 2, 3, 4, 2]
  1. pop 弹出最后一个值并删除
a.pop() //2
print (a) //[1, 2, 3, 4]
  1. 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]
  1. reverse, 反向排序
>>> a
[0, 1, 2, 3, 4]  //默认
>>> a.reverse()  // 反向排序
>>> a
[4, 3, 2, 1, 0]  // 反向排序后的数值
>>> a.reverse()  // 再次反向排序
>>> a
[0, 1, 2, 3, 4]  // 排序后的值
>>>
  1. del 删除一个元素,参数为键值
>>> a
[0, 1, 2, 3, 4] // 默认值
>>> del a[0]    // 删除下表为 0 的元素
>>> a
[1, 2, 3, 4]    // 删除后的结果
>>>
  1. 向列表中加入多个元素 "+"
>>> a
[1, 2, 3, 4]
>>> a + [2,2,2]
[1, 2, 3, 4, 2, 2, 2]
>>>
  1. 列表重复 "*"
    将现有列表重复 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]
  1. count 判断列表中元素的总数
>>> a
[1, 2, 3, 4]
>>> a.count(5)  // a 只有 4 个元素,返回 0(false)>>> a.count(4)  // a 有 4 个元素,返回 1(true)
1
>>> 
  1. 列表转字符串
# 如果列表中都是字符串的话可以使用 join
list = ['a','c','b']
#字符串之间以,分割,也可以改为其他符号
",".join(list)

总结

list 可以直接通过修改下标的方式修改值,所以列表是可变的序列,区分与元组。list 包含了很多有用方法,以及快速添加的 + * 符号.list 除了可以通过索引获取值外,还可以通过切片的形式获取区间值。需要注意的,要区分列表的引用和拷贝,引用是引用了相同的地址,其中一个做出修改,所有基于此引用的列表都会发生改变。拷贝是从当前列表完全拷贝出一份新的列表,地址是不一样的。这点可以通过 id()方法来校验.

正文完
 0
admin
版权声明:本站原创文章,由 admin 于2017-08-26发表,共计1437字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码