python3内建模块-list类
1、介绍
builtins.py文件中定义了list类,用于处理python中列表数据。
list也是python的基本数据类型之一。
- 列表是单列的元素集合,用[]包围,内部元素之间用,分隔
- 列表的元素可以是任意类型,且某一列表中可以同时包含不同类型
- 列表支持元素的增删改
- 列表支持数值索引
- 元素不会进行默认排序,可以重复。
2、类
class list(object):
def __init__(self, seq=()):
pass
3、字面量初始化
a= ["12","abc","1", "23","17"]
4、类初始化
- 可以传递一个参数,为可迭代对象,将其初始化为列表。不是可迭代对象会报错
print(list()) # []
print(list("abcd")) # ['a', 'b', 'c', 'd']
print(list((12,22,"abc"))) #[12, 22, 'abc']
5、属性
6、方法
(1)sort
- 对列表进行排序,不返回
- 要求元素必须都是str或者都是int等同一类型,不同类型之间不能排序,会报错
- 默认是进行升序排列
- 如果两者对应位上字符相同,那么长度更长的排在后面
c = ["12","abc","1", "23","17"]
c.sort()
print(c)
- 如果是多维数组,会对整体的进行排序,而不会对内部的list进行排序
- 排序依据是先根据整体子元素的元素0,然后是元素1..
arr = [['abc', '111'], ['ggg', '123'], ['abc', '000'], ['gg','dd']]
arr.sort()
print(arr)
"""
[['abc', '000'], ['abc', '111'], ['gg', 'dd'], ['ggg', '123']]
"""
(2)count
- 匹配元素的个数,参数是任意类型,返回int类型
- 当没有匹配时,返回0
(3)append
- 作用是将参数作为一个元素添加到列表末尾,无返回
- 参数可以是任意类型
(4)clear
- 作用是将列表的元素全部清除,无返回
- 清除只是将元素与列表对象的关系的解除,如果元素是变量,那么仍然可以进行访问
- 注意:在一个方法或函数中,对参数的list调用clear会改变调用传递前的实参,而直接对参数赋值为list(),只影响形参。
(5)index
- 作用是匹配列表中的值,返回第一处参数所在的索引,返回类型为int
- 如果没有匹配项,会报错
(6)remove
- 作用是移除列表中第一个匹配项,无返回
- 参数可以是任意类型
(7)copy
- 作用是克隆,返回克隆后的对象,返回类型list
- 注意,这是浅层克隆,即直接将原列表中元素的地址复制写入新列表中
z1 = [[12, 22], [32, "abc"]]
z2 = a.copy()
z2[0][1] = 55
print(z1) # [[12, 55], [32, 'abc']]
print(z2) # [[12, 55], [32, 'abc']]
(8)insert
insert(__index, __object)
- 作用是插入新值作为元素,无返回
- __index,int类型,插入索引。如果其小于等于0,表示在列表索引为0插入。如果其大于等于长度,表示在末尾插入。
- __object,任意类型,作为新的元素
(9)pop
pop(__index)
- 移除指定的索引,并返回移除元素
- __index参数,int类型,表示待移除索引,可以是0和正数,也可以是负数索引。但必须是有效范围,超出会报错
(10)reverse
- 顺序反转,将元素倒序排列,无返回
(11)extend
extend(__iterable)
- 作用是指定一个可迭代对象,将该参数中的元素追加到当前列表中
7、关于移除
如果想要将list中所有值为x的元素移除
(1)方法一
- 移除失败
a = [15,15,20,30,15,11]
for item in a:
if item==15:
a.remove(item)
print(a) # [20, 30, 15, 11]
(2)方法二
- 移除失败
a = [15,15,20,30,15,11]
for i in range(len(a)):
print(i)
if a[i]==15:
a.remove(15)
print(a) # 超出范围报错,也就是说len(a)只在range函数中执行一回
(3)方法三
- 可行
a = [15,15,20,30,15,11]
i=0
while i < len(a):
print(i)
if a[i]==15:
del a[i]
# continue很重要,匹配移除当前索引的元素,然后再判断当前索引
continue
i = i + 1
print(a)# [20, 30, 11]
(4)方法四
- 最简单的写法
a = [15,15,20,30,15,11]
for i in range(a.count(15)):
a.remove(15)
print(a) # [20, 30, 11]
8、获取元素整体内容
a = [123,'15','ss']
print(str(a)[1:-1])
- 需要注意的是,如果是字符串元素,则保留引号
- 这个操作一般用于元素是表示索引的数值时,将其字符串化,以便作为参数显示在文本框中,或者记录在文件中