列表的常用方法

2022-12-15 Python基础

Python中的列表和Java中的List集合类似,但是我感觉比Java的List集合还要灵活,甚至能进行加法、乘法运算,常用的函数和java倒也相似,例如元素是否存在于列表中、获取列表长度、添加元素、删除元素、排序……

方法名称 使用效果
in 列表中是否有某元素
not in 列表中是否没有某元素
let 获取列表长度
append 添加元素到列表末尾
insert 添加元素到指定位置
count 统计某元素在列表中的个数
remove 删除元素,传入元素,如果删除的元素不存在,则报错
del Python的内置函数,直接从内存中删除元素,删除后引用会提示变量未定义
reverse 翻转列表元素的顺序
sort 列表排序
clear 清空列表
copy 拷贝列表
extend 代入列表,将其他列表导入到当前列表

# 1.列表的基础使用

列表支持加法操作,甚至支持乘法操作,len函数获取列表长度,innot in可以判断列表中是否有某值。

if __name__ == '__main__':
    list1 = ['name1', 'name2', 'name3']
    print(list1 * 2)  # ['name1', 'name2', 'name3', 'name1', 'name2', 'name3']

    list1 *= 2
    print(list1)  # ['name1', 'name2', 'name3', 'name1', 'name2', 'name3']

    print(len(list1))  # 6
    print('name1' in list1)      # name1是否在成员中?True
    print('name1' not in list1)  # name1是否不在成员中?False

# 2.列表的添加append

if __name__ == '__main__':
    list1 = ['name1', 'name2', 'name3']
    list1.append('test')
    print(list1)  # ['name1', 'name2', 'name3', 'test']

# 3.添加到指定位置insert

如果insert传毒的位置在列表中不存在,则将新元素添加至列表末尾。

if __name__ == '__main__':
    list1 = ['name1', 'name2', 'name3']
    list1.insert(1, 'test')
    print(list1)  # ['name1', 'test', 'name2', 'name3']

# 4.某元素在列表中的个数count

if __name__ == '__main__':
    list1 = ['name1', 'name2', 'name3']
    list1.insert(1, 'test')
    print(list1.count('name1'))  # 1
    print(list1.count('name'))   # 0

# 5.删除元素remove

if __name__ == '__main__':
    list1 = ['name1', 'name2', 'name3']
    list1.remove('name1')
    print(list1)  # ['name2', 'name3']

# 6.删除变量del

if __name__ == '__main__':
    list1 = ['name1', 'name2', 'name3']
    del list1
    print(list1)  # NameError: name 'list1' is not defined,提示变量未定义

# 7.翻转元素reverse

if __name__ == '__main__':
    list1 = ['name1', 'name2', 'name3']
    list1.reverse()
    print(list1)  # ['name3', 'name2', 'name1']

# 8.列表排序sort

sort(cmp,key,reverse)cmp指定排序方案的函数;key参数比较;reverse排序规则,False升序(默认),True降序。

if __name__ == '__main__':
    list1 = [32, 95, 66, 79, 12, 59, 88]
    list1.sort()
    print(list1)  # [12, 32, 59, 66, 79, 88, 95]
    list1.sort(reverse=True)
    print(list1)  # [95, 88, 79, 66, 59, 32, 12]

# 9.清空列表clear

if __name__ == '__main__':
    list1 = [32, 95, 66, 79, 12, 59, 88]
    list1.clear()
    print(list1)  # []

# 10.拷贝列表copy

为什么不能直接赋值?直接赋值赋过去的是地址,也就是原列表发生改变,新列表的值也会同时改变,使用copy函数则不会有这个问题。

if __name__ == '__main__':
    list1 = [32, 95, 66]
    list2 = list1
    print(list2)      # [32, 95, 66] 打印list2发现拷贝成功
    list1.remove(32)  # 删除list1中的元素
    print(list2)      # [95, 66] list2也会发送改变

    list3 = list1.copy()
    list1.remove(95)  # 改变list1的值
    print(list3)      # [95, 66],list3不会改变 

# 11.导入extends

if __name__ == '__main__':
    list1 = [32, 95, 66]
    list2 = ['name1', 'name2']
    list1.extend(list2)
    print(list1)  # [32, 95, 66, 'name1', 'name2']

# 12.切片

if __name__ == '__main__':
    num = [1, 2, 3, 4, 5, 6, 7, 8, 9]
    print(num[0])    # 1
    print(num[2:5])  # [3, 4, 5]
    print(num[5:])   # [6, 7, 8, 9]
    print(num[:3])   # [1, 2, 3]
    
    num[2] = 30      # 修改i指定下标的内容
    print(num)       # [1, 2, 30, 4, 5, 6, 7, 8, 9]

    del num[2]       # 删除某个元素
    print(num)       # [1, 2, 4, 5, 6, 7, 8, 9]
上次更新: 1 年前