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
    +关注

    关注

    57

    文章

    4857

    浏览量

    89579
  • 操作符
    +关注

    关注

    0

    文章

    21

    浏览量

    9224
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    拼多多商品列表API使用指南

    商品。 分类筛选:按商品类目进行筛选。 价格排序:按商品价格进行升序或降序排列。 销量排序:按商品销量进行排序。 分页查询:支持大数据量的分页获取。 2.公共请求地址:c0b.cc/R4rbK2 。 二、Python请求示例 以下是一个完整的
    的头像 发表于 11-29 15:17 389次阅读

    调用拼多多开放平台 API 获取店铺列表

    pdd.mall.info.list.get (或类似名称,具体名称请以官方文档为准) 接口用于查询店铺列表。开发者可以通过此接口获取授权店铺的基本信息。 主要功能: 查询当前授权账号下的店铺列表。 获取店铺的核心信息,如店铺
    的头像 发表于 11-10 15:30 195次阅读
    调用拼多多开放平台 API 获取店铺<b class='flag-5'>列表</b>

    Python中字符串逆序有几种方式,代码是什么

    对于一个给定的字符串,逆序输出,这个任务对于python来说是一种很简单的操作,毕竟强大的列表和字符串处理的一些列函数足以应付这些问题 了,今天总结了一下python中对于字符串的逆序输出的几种常用
    的头像 发表于 08-28 14:44 784次阅读

    HarmonyOS NEXT应用元服务常见列表操作分组吸顶场景

    覆盖城市列表上方,再给对应List添加sticky属性和onScrollIndex()方法,实现两个列表数据间的联动效果。 开发步骤 城市列表
    发表于 07-03 15:54

    HarmonyOS NEXT应用元服务常见列表操作二级联动

    二级联动场景 场景描述 通过左边一级列表的选择,联动更新右边二级列表的数据,常用于商品分类选择、编辑风格等二级类别选择页面。 本场景以商品分类列表
    发表于 07-02 10:29

    HarmonyOS NEXT应用元服务常见列表操作多类型列表项场景

    场景描述 List组件作为整个首页长列表的容器,通过ListItem对不同模块进行视图界面定制,常用于门户首页、商城首页等多类型视图展示的列表信息流场景。 本场景以应用首页为例,将除页面顶部搜索框
    发表于 06-30 15:11

    《仿盒马》app开发技术分享-- 分类右侧商品列表(18)

    中可能会点击不同的条目。我们想要的效果是顶部的类目切换,左侧的列表优先选中第一个,同时展示第一个分类的对应商品 所以在监听方法中我们还要把pos初始化为0,同时重新查询左侧列表,因为在
    发表于 06-30 12:00

    《仿盒马》app开发技术分享-- 分类左侧列表(17)

    技术栈 Appgallery connect 开发准备 上一节我们实现了分类页面的顶部导航栏全选弹窗列表,并实现了跟顶部列表的点击选中联动效果,这一节我们要实现的功能是,分类模块的左侧
    发表于 06-30 10:55

    《仿盒马》app开发技术分享-- 分类模块顶部导航列表弹窗(16)

    的index传递进去,选中状态要保持同步。同时在弹窗内选择分类,外部列表也要同步切换,并且每次切换都要在list允许居中的情况下实现选中的item居中。 代码实现 首先实现弹窗的创建数据的传入,和选择后
    发表于 06-30 10:34

    《仿盒马》app开发技术分享-- 分类模块顶部导航列表(15)

    ,这一节我们要改造的内容是分类页,这个页面我们在之前的非端云一体化项目中实现过。现在要改造成端云一体的模式,并且我们的金刚区也要实现分类页的点击联动 功能分析 1.分类列表
    发表于 06-30 10:31

    HarmonyOS NEXT应用元服务常见列表操作Tabs吸顶场景

    的内容,并对页面内容进行分类,提高页面空间利用率。 通过Tabs组件,配合使用Stack、Scroll、Search以及List等基础组件构建完整页面,再使用List组件的nestedScroll属性
    发表于 06-28 15:07

    创建列表 (List) 介绍,一起来看看是做什么的

    创建列表 (List) 列表是一种复杂的容器,当列表项达到一定数量,内容超过屏幕大小时,可以自动提供滚动功能。它适合用于呈现同类数据类型或数据类型集,例如图片和文本。在
    发表于 04-30 07:06

    Demo示例: List的使用

    List 列表包含一系列相同宽度的列表项。适合连续、多行呈现同类数据,例如图片和文本。 子组件 仅支持ListItem、ListItemGroup子组件。 常用接口 List(v
    发表于 04-28 06:49

    Python中的迭代器与生成器

    Python迭代器与生成器 列表生成式 列表生成式也叫做列表推导式,它本身还是列表,只不过它是根据我们定义的规则来生成一个真实的
    的头像 发表于 02-20 10:43 677次阅读

    电话配线架怎么整理好看

    断开与电话配线架相关的电源和通信连接,以避免在整理过程中发生意外。 准备工具: 准备必要的工具,如剥线刀、打线刀、扎带、IDC配线架模块等,以便在整理过程中使用。 二、整理步骤 分类
    的头像 发表于 02-19 11:34 927次阅读