0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

python之列表list方法分类整理

冬至配饺子 来源:缪斯之子 作者:肖新苗 2022-08-23 10:14 次阅读

题记

将自带的方法分类整理、验证并做成例子, 方便记忆与理解

起初

是为了方便自己查找, 后来因为越来越受欢迎, 所以分享出来

基本的增删改查,insert,pop

def test_1():
# 增删改查,增和删
list1 = ['a', 'b', 'c']
list1.append('d')
assert ['a', 'b', 'c', 'd'] == list1, 'append error'
del list1[0]
assert ['b', 'c', 'd'] == list1, 'del error'
list1[0] = 'e'
assert ['e', 'c', 'd'] == list1, 'update error'
c = list1[1]
assert 'c' == c, 'query error'

list1.insert(1, 'f')
assert ['e', 'f', 'c', 'd'] == list1, 'insert error'
list1.pop(1)
assert ['e', 'c', 'd'] == list1, 'pop error'
list1.pop()
assert ['e', 'c'] == list1, 'pop 2 error'

2.list方法, +操作符, in, enumerate

def test_2():
# 方法:list(p), + , in,enumerate
list1 = list('abc')
assert ['a', 'b', 'c'] == list1, 'list(p) 方法错误'
list1 = list1 + ['d', 'e']
assert ['a', 'b', 'c', 'd', 'e'] == list1, 'list相加错误'
assert 'a' in list1, 'list的in操作错误'

list2 = list({'name': 'a', 'age': 19})
assert ['name', 'age'] == list2, 'list(p) 方法错误'

indexs = [i for i, _ in enumerate(list2)]
assert [0, 1] == indexs, 'enumerate error'

3. append和extend

def test_3():
# append 和 extend
list1 = ['a', 'b', 'c']
list2 = ['d', 'e']
list_append = list1.copy()
list_append.append(list2)
assert ['a', 'b', 'c', ['d', 'e']] == list_append, 'list append方法错误'
list_extend = list1.copy()
list_extend.extend(list2)
assert ['a', 'b', 'c', 'd', 'e'] == list_extend, 'list extentd 方法错误'

4.index 和 sort方法

def test_4():
# list.index(obj),sort
list1 = ['b', 'c', 'a']
i = 0
for v in list1:
assert list1.index(v) == i, f'list index方法错误 i:{i},v:{v}'
i += 1

list1.sort()
assert ['a', 'b', 'c'] == list1, 'list sort 方法错误'
list1.sort(reverse=True)
assert ['c', 'b', 'a'] == list1, 'list sort reverse 方法错误'

list2 = [{
'name': 'b',
'age': 20
}, {
'name': 'a',
'age': 18
}, {
'name': 'b',
'age': 19
}]
list2.sort(key=lambda kv: kv['name'])
assert {'name': 'a', 'age': 18} == list2[0], 'list sort key方法错误'
list2.sort(key=lambda kv: kv['age'])
assert [{
'name': 'a',
'age': 18
}, {
'name': 'b',
'age': 19
}, {
'name': 'b',
'age': 20
}] == list2, 'list sort key 方法错误'
list2.sort(key=lambda kv: (kv['name'], kv['age']))
assert [{
'name': 'a',
'age': 18
}, {
'name': 'b',
'age': 19
}, {
'name': 'b',
'age': 20
}] == list2, 'list sort key 方法错误'

5.浅复制和深度复制

import copy

def test_5():
# 浅复制 和 深度复制
# 只有list1中的数据是引用类型的时候,才会考虑deepcopy,否则,平常的copy就行
# 也就是说,如果只是修改a,b,c, list3,list4,list5 都不会影响list1
list1 = ['a', 'b', 'c', ['e', 'f']]
list2 = list1
list3 = list1[:]
list4 = list1.copy()
list5 = [i for i in list1]
list6 = copy.deepcopy(list1)

assert id(list1) == id(list2), '== error'
assert id(list1) != id(list3), '[:] error'
assert id(list1) != id(list4), 'list copy error'
assert id(list1) != id(list5), 'for error'
assert id(list1) != id(list6), 'deepcopy error'

list6[3][0] = 'd'
assert ['a', 'b', 'c', ['e', 'f']] == list1, 'deepcopy 1 error'
assert ['a', 'b', 'c', ['d', 'f']] == list6, 'deepcopy 2 error'

6.倒着删除: 为了防止删除时报错或者数据不对

# 正确的删除方式
def test_6():
list1 = ['a', 'b', 'c', 'd']
for i in range(len(list1) - 1, -1, -1):
del list1[i]
assert [] == list1, 'list delete error'
# 错误的方式
def test_7():
# 不要这样删除:https://blog.51cto.com/u_14246112/3157689
list1 = ['a', 'b', 'c']
for i in list1:
list1.remove(i)
# 本意是删除所有元素,但是删除的过程中列表发生了位移,所以删除了 a和c
assert ['b'] == list1, 'list delete 2 error'

7.拆分: n:小集合的长度为n

def test_8():
a1 = [i for i in range(100)]
s1 = split_list_by_size(a1, 7)
# 每个小集合应该都是7,最后一个是小于等于7
assert len(s1[-1]) <= 7, 'split size 1 error'
s1.pop()
for i in s1:
assert len(i) == 7, 'split size 2 error'

def split_list_by_size(raw_list, n):
# n:小集合的长度为n
l = len(raw_list)
return [raw_list[i:i + n] for i in range(0, l, n)]
8. 拆分: n:有多少个小集合

def test_9():
a1 = [i for i in range(100)]
s1 = split_list_by_number(a1, 7)
# 大集合中有7个小集
assert len(s1) == 7, 'split number 2 error'

def split_list_by_number(raw_list, n):
# n:有多少个小集合
l = len(raw_list)
s = int(l / n) + 1
return [raw_list[i:i + s] for i in range(0, l, s)]


审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • python
    +关注

    关注

    56

    文章

    4811

    浏览量

    85124
  • 操作符
    +关注

    关注

    0

    文章

    21

    浏览量

    9064
收藏 人收藏

    评论

    相关推荐

    Python中dict支持多个key的方法

    ​ 在Python中,字典(dict)是一种非常强大的数据结构,它允许我们通过键(key)来存储和检索值(value)。有时候,我们可能想要根据多个键来检索或操作字典中的数据。虽然Python的字典
    的头像 发表于 11-29 15:59 226次阅读

    雷达的基本分类方法

    电子发烧友网站提供《雷达的基本分类方法.pdf》资料免费下载
    发表于 09-11 09:09 6次下载

    如何实现Python复制文件操作

    Python 中有许多“开盖即食”的模块(比如 os,subprocess 和 shutil)以支持文件 I/O 操作。在这篇文章中,你将会看到一些用 Python 实现文件复制的特殊方法。下面我们开始学习这九种不同的
    的头像 发表于 07-18 14:53 499次阅读

    基于Python的深度学习人脸识别方法

    基于Python的深度学习人脸识别方法是一个涉及多个技术领域的复杂话题,包括计算机视觉、深度学习、以及图像处理等。在这里,我将概述一个基本的流程,包括数据准备、模型选择、训练过程、以及测试与评估,并附上简单的代码示例。
    的头像 发表于 07-14 11:52 1336次阅读

    鸿蒙ArkTS容器组件:ListItemGroup

    该组件用来展示列表item分组,宽度默认充满[List]组件,必须配合List组件来使用。
    的头像 发表于 07-10 09:20 830次阅读
    鸿蒙ArkTS容器组件:ListItemGroup

    深度学习中的时间序列分类方法

    的发展,基于深度学习的TSC方法逐渐展现出其强大的自动特征提取和分类能力。本文将从多个角度对深度学习在时间序列分类中的应用进行综述,探讨常用的深度学习模型及其改进方法,并展望未来的研究
    的头像 发表于 07-09 15:54 1244次阅读

    鸿蒙ArkTS容器组件:List

    列表包含一系列相同宽度的列表项。适合连续、多行呈现同类数据,例如图片和文本。
    的头像 发表于 07-09 14:57 956次阅读
    鸿蒙ArkTS容器组件:<b class='flag-5'>List</b>

    不同地物分类方法在长江中下游典型湖区应用对比分析

    以龙感湖自然保护区、华阳河湖群自然保护区作为研究区,以高分一号WFV作为数据源,采用6种不同地物分类方法进行地物分类,从空间和精度方面对试验结果进行对比分析,探讨地物分类效果,以选择出
    的头像 发表于 05-31 11:03 418次阅读
    不同地物<b class='flag-5'>分类</b><b class='flag-5'>方法</b>在长江中下游典型湖区应用对比分析

    鸿蒙ArkUI开发:常用布局【 创建列表List)】

    列表容器是为了高效处理长列表的容器,能支持横向、竖向滚动,数据分组,分组头悬浮等功能
    的头像 发表于 05-15 15:30 893次阅读
    鸿蒙ArkUI开发:常用布局【 创建<b class='flag-5'>列表</b>(<b class='flag-5'>List</b>)】

    HarmonyOS开发案例:【使用List组件实现设置项】

    使用List组件、Toggle组件以及Router接口,实现一个简单的设置页,点击将跳转到对应的详细设置页面。
    的头像 发表于 05-10 17:01 1052次阅读
    HarmonyOS开发案例:【使用<b class='flag-5'>List</b>组件实现设置项】

    OpenHarmony语言基础类库【@ohos.util.List (线性容器List)】

    List底层通过单向链表实现,每个节点有一个指向后一个元素的引用。当需要查询元素时,必须从头遍历,插入、删除效率高,查询效率低。List允许元素为null。
    的头像 发表于 05-10 16:57 810次阅读
    OpenHarmony语言基础类库【@ohos.util.<b class='flag-5'>List</b> (线性容器<b class='flag-5'>List</b>)】

    OpenHarmony实战开发-list开发指导

    list是用来显示列表的组件,包含一系列相同宽度的列表项,适合连续、多行地呈现同类数据。 创建list组件 在pages/index目录下的hml文件中创建一个
    发表于 04-29 14:44

    访问控制列表什么?ACL的功能特点

    访问控制列表(Access Control List,简称ACL)是一种网络安全机制,用于定义和实施对网络资源或系统对象的访问权限。ACL可以精确地控制哪些主体(如用户、设备、服务等)能够对特定客体
    的头像 发表于 04-03 13:57 871次阅读

    台积电重返全球企业市值前十之列

    3月11日消息,随着对人工智能的持续乐观情绪不断推动股价创出新高,台积电目前已时隔近四年,重返了全球企业市值前十之列
    的头像 发表于 03-12 09:49 769次阅读
    台积电重返全球企业市值前十<b class='flag-5'>之列</b>!

    基于Python的地图绘制教程

    本文将介绍通过Python绘制地形图的方法,所需第三方Python相关模块包括 rasterio、geopandas、cartopy 等,可通过 pip 等方式安装。
    的头像 发表于 02-26 09:53 1345次阅读
    基于<b class='flag-5'>Python</b>的地图绘制教程