[关闭]
@songying 2018-12-30T21:29:05.000000Z 字数 2642 阅读 1135

python 列表

python数据类型


基本知识

列表 是一种用于保存一系列有序项目的集合, 且该数据结构是可变的。元素之间以逗号分隔,列表List应该用方括号括起来。

  1. shoplist = ['apple', 'mango', 'carrot', 'banana']
  2. shoplist[0] # 访问元素
  3. shoplist[0] = 100 # 修改列表元素
  4. del shoplist[0] # 删除列表元素
  5. shoplist.append('rice')
  6. shoplist.sort()

LIst切片

  1. print (list) # 输出完整列表
  2. print (list[0]) # 输出列表第一个元素
  3. print (list[1:3]) # 从第二个开始输出到第三个元素
  4. print (list[2:]) # 输出从第三个元素开始的所有元素
  5. print (tinylist * 2) # 输出两次列表

列表操作符

+用于组合列表,*用于重复列表

Python 表达式 结果 描述
len([1, 2, 3]) 3 长度
[1, 2, 3] + [3, 4, 5] [1, 2, 3, 3, 4, 5] 组合
['Hi!'] * 4 ['Hi!', 'Hi!', 'Hi!', 'Hi!'] 重复
3 in [1, 2, 3] True 元素是否存在于列表中
for x in [1, 2, 3]: print(x, end=" ") 1 2 3 迭代

列表截取与拼接

Python 表达式 结果 描述
L[2] 'Taobao' 读取第三个元素
L[-2] 'Runoob' 从右侧开始读取倒数第二个元素: count from the right
L[1:] ['Runoob', 'Taobao'] 输出从第二个元素开始后的所有元素

列表相关方法

list(seq)

将元组转换为列表

  1. list(seq)
  2. # 返回值: 返回列表
  3. # seq: 要转换的元组

list.append(obj)

在列表末尾添加新的对象。

  1. list.append(obj)
  2. # 无返回值,但会修改原来的表

list.count(obj)

统计某个元素在列表中出现的次数

  1. list.count(obj)
  2. # 返回元素在列表中出现的次数

list.extend(seq)

在列表末尾一次性追加另一个序列中的多个值。多用于在已存在的列表中添加新列表的内容。

  1. list.extend(seq)
  2. # 无返回值

list.index(obj)

从列表中找出某个值第一个匹配项的索引位置。

  1. list.index(obj)
  2. # obj : 要查找的对象
  3. # 返回值:查找对象的索引位置,如果没有找到对象则抛出异常。

list.pop(num=[-1])

移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。

  1. list.pop(num=[-1])
  2. # num,表示删除list[num],默认删除最后一个元素
  3. # 返回值:从列表中移除的元素对象
  4. list.pop(1) # 删除列表的第二个元素

list.remove(obj)

移除列表中某个值的第一个匹配项。

  1. list.remove(obj)
  2. # obj: 列表中要移除的对象
  3. 返回值:无

list.reverse()

反向列表中元素。

  1. list.reverse()
  2. # 返回值: 无,将列表自身元素反向

list.sort([func])

对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数。

默认升序排列

  1. list.sort([func])
  2. # func: 可选参数,如果指定了该参数会使用该参数的方法进行排序
  3. # 返回值:无,对列表自身进行排序

list.clear()

清空列表

  1. list.clear()
  2. # 无返回值

list.insert(num, value)

将某个元素添加到某个位置。

  1. list.insert(num, value)
  2. # 插入list[num = value

list.copy()

复制列表

  1. list.copy()
  2. # 返回值: 复制后的新列表

注意到,虽然 append 和 extend 可接收一个列表作为参数,但是 append 方法是将其作为一个元素添加到列表中,而 extend 则是将新列表的元素逐个添加到原列表中。

注意事项

  1. 注意列表的边界检查
  2. 列表是可嵌套的。

列表中实现的方法和特殊方法

元组和列表中都具有的

方法 作用
s.__add__(s2) 元组拼接 s + s2
s.__contains__(e) s中是否包含e
s.count(e) e在s中的计数
s.__getitem__(p) s[p]
s.index(e) 在 s 中找到元素 e 第一次出现的位置
s.__iter__() 获取 s 的迭代器
s.__len__() len(s) ,元素的数量
s.__mul__(n) s * n ,n个 s 的重复拼接
s.__rmul__(n) n * s ,反向拼接 *

列表具有而元组没有的

方法 作用
s.__iadd__(s2) s += s2 ,就地拼接
s.__delitem__(p) 把位于 p 的元素删除
s.__imul__(n) s *= n ,就地重复拼接
s.__reversed__() 返回 s 的倒序迭代器
s.__setitem__(p, e) s[p] = e
方法 作用
s.sort([key],[reverse]) 就地对 s 中的元素进行排序,可选的参数有键( key )和是否倒序( reverse )
s.append(e) 在尾部添加一个新元素
s.clear() 删除所有元素
s.copy() 列表的浅复制
s.extend(it) 把可迭代对象 it 追加给 s
s.insert(p, e) 在位置 p 之前插入元素e
s.pop([p]) 删除最后或者是(可选的)位于 p 的元素,并返回它的值
s.remove(e) 删除 s 中的第一次出现的 e
s.reverse() 就地把 s 的元素倒序排列

list.sort 方法和内置函数sorted

  • list.sort 方法会就地排序列表,也就是说不会把原列表复制一份。
  • sorted,它会新建一个列表作为返回值。

在python中有一个惯例: 如果一个函数或者方法对对象进行的是就地改动,那它就应该返回 None,好让调用者知道传入的参数发生了变动,而且并未产生新的对象。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注