天天看点

Python数据类型之列表1、创建2、增加3、删除4、修改5、查找6、公共方法

列表是python编程里经常会用到的数据类型之一,属于可变数据类型,即列表里的数据发生了更改,但是其内存地址没有变化。本文将按照增删改查的顺序介绍列表的基本操作。需要注意的时是 ,列表的操作都会直接作用在原列表上,例如排序.sort(),是将原列表本身进行排序,而不是列表的副本,这点需要与字符串区分。

1、创建

# -*- coding:utf-8 -*-
# author: kenny

# 列表用方括号[]来创建,中间的元素用逗号,隔开
>>> create_list1 = [1, 2, 3, 4]
>>> create_list1
[1, 2, 3, 4]

# 也可以用list([])或list(())来创建
>>> create_list2 = list([1, 2, 3, 4])
>>> create_list2
[1, 2, 3, 4]
>>>
>>> create_list3 = list((1, 2, 3, 4))
>>> create_list3
[1, 2, 3, 4]
>>>

# 列表里的元素可以是多个类型,例如:
>>> muti_list = ['dabaitu', 2019, '1.2', True]
>>> muti_list
['dabaitu', 2019, '1.2', True]
>>>

# 但是不建议这样用,在实际工作中列表里的元素一般都是同一个类型
# 列表里的元素还可以嵌套
>>> more_list = [1,2,3,[3,4,5],888]
>>> more_list
[1, 2, 3, [3, 4, 5], 888]
>>>
           

2、增加

# 增加
# 用append(待插入元素)在最后面插入
>>> str_list = []
>>> str_list.append('a')
>>> str_list.append('b')
>>>
>>> str_list
['a', 'b']
>>>

# 用 insert(待插入位置,待插入元素) 在索引位置插入
# 索引从0开始,若待插入位置超过列表的最大位置,则直接在最后面插入数据
>>> str_list.insert(1, 11)
>>> str_list
['a', 11, 'b']
>>> str_list.insert(100, '100')
>>> str_list
['a', 11, 'b', '100']
>>>
           

3、删除

# 删除
# 1、用pop():删除索引位置的元素。索引为空时删除最后一个,索引过界时报错
# 注:pop有返回值,返回值为所删除元素
my_list = [3, 2, 5, 8, 4, 7, 6, 9, 0]
temp = my_list.pop(1)
print(temp)  # 2
print(my_list)  # [3, 5, 8, 4, 7, 6, 9, 0]
temp = my_list.pop(1000)  # IndexError: pop index out of range

# 2、用remove():按元素删除。无返回值,若元素不存在报错
my_list = [3, 2, 5, 8, 4, 7, 6, 9, 0]
temp = my_list.remove(2) 
print(temp)
print(my_list)  # [3, 5, 8, 4, 7, 6, 9, 0]

# 3、用clear():清空列表
my_list = [3, 2, 5, 8, 4, 7, 6, 9, 0]
my_list.clear()
print(my_list)  # []

# 4、用del list:删除列表。
my_list = [3, 2, 5, 8, 4, 7, 6, 9, 0]
del my_list
print(my_list)  # NameError: name 'my_list' is not defined

# del list[start:end]:可以切片删除,顾首不顾尾,
my_list = [3, 2, 5, 8, 4, 7, 6, 9, 0]
del my_list[4: 8]  # 下标从0开始,实际删除的是第5个到第8个的数据,即4,7,6,9
print(my_list)  # [3, 2, 5, 8, 0]
           

4、修改

# 修改
# 1、直接按照下标检索修改,位置过界报错
my_list = [3, 2, 5, 8, 4, 7, 6, 9, 0]
my_list[1] = 111
# my_list[100] = 111  # IndexError: list assignment index out of range
print(my_list)  # [3, 111, 5, 8, 4, 7, 6, 9, 0]

#2、切片修改 li[start:end] = "对象":切片操作同样是顾首不顾尾
# 修改对象部分在对应位置拆分添加,被修改的位置对应元素被覆盖
my_list = [3, 2, 5, 8, 4, 7, 6, 9, 0]
my_list[2:4] = [378, 226, 333, 555]  # 在下标为2到3的位置修改
print(my_list)  # [3, 2, 378, 226, 333, 555, 4, 7, 6, 9, 0]
           

5、查找

# 查找
# 1、直接按下标位置查找
my_list = [3, 2, 5, 8, 4, 7, 6, 9, 0]
print(my_list[0])  # 3

# 2、切片查找[start, end, step]
print(my_list[0:6:2])  # [3, 5, 4]

# 3、循环全部查找
for i in my_list:
    print(i, end='  ')  # 3  2  5  8  4  7  6  9  0
           

6、公共方法

my_list = [3, 2, 5, 8, 4, 7, 6, 9, 0, 3]
# 返回长度
print(len(my_list))  # 10
# 返回对象出现的次数
print(my_list.count(3))  # 2
# 返回对象的索引,找不到报错,有多个元素时返回第一个元素所在位置
print(my_list.index(3))  # 0
# 从小到大正序排序。对象为数字
my_list.sort()
print(my_list)  # [0, 2, 3, 3, 4, 5, 6, 7, 8, 9]
# 从大到小倒叙排序
my_list.sort(reverse=True)
print(my_list)  # [9, 8, 7, 6, 5, 4, 3, 3, 2, 0]
# 反转
my_list.reverse()
print(my_list)  # [0, 2, 3, 3, 4, 5, 6, 7, 8, 9]
# 内部可以看成一个正序排列的列表。顾头不顾尾 range(start,end,step)
for i in range(0, len(my_list)):
    print(my_list[i])
    """
    0
    2
    3
    3
    4
    5
    6
    7
    8
    9
    """