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])
  • 需要注意的是,如果是字符串元素,则保留引号
  • 这个操作一般用于元素是表示索引的数值时,将其字符串化,以便作为参数显示在文本框中,或者记录在文件中
posted @ 2023-07-11 13:36  挖洞404  阅读(30)  评论(0编辑  收藏  举报