【python】python列表的用法记录

文章目录

      • 序言
      • 1. 列表的创建
      • 2. 列表的访问
      • 3. 列表的更新
      • 4. 列表的删除
      • 5. 列表的元素查找
      • 6. 列表的脚本操作符
      • 7. 列表的函数/方法
      • 8. 列表的一些其他操作

序言

  • 总结字典的常见用法,以备查阅

1. 列表的创建

  • 列表是python中最常用的数据类型,其数据项不需要具有相同的类型

  • 列表创建方式1:[]创建

    a = []	# 创建一个空列表
    print(a)b = [1, 2, 'abd']	# 创建列表并赋值
    print(b)
    print(b[2])			# 下标访问
    
  • 列表的创建方式2:list()创建

    a = list()	# 创建一个空列表
    print(a)a.append(1)	# 添加元素
    print(a)b = list("abcdef")
    print(b)	# 输出 ['a', 'b', 'c', 'd', 'e', 'f']
    
  • 列表的创建方式3:range辅助创建整数列表

    c = list(range(10))
    print(c)	# 输出 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]d = list(range(0,10,2))
    print(d)    # 输出 [0, 2, 4, 6, 8]e = list(range(10,0,-1))
    print(e)    # 输出 [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
    
  • 列表创建方式4:推导式生成列表

    f = [x*2 for x in range(10)]
    print(f)		# 输出 [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]g = [x*2 for x in range(50) if x%8==0]
    print(g)		# 输出 [0, 16, 32, 48, 64, 80, 96]
    
  • 二维列表创建方式1:创建空二维列表

    # 方式1: 创建空二维列表
    a = [[] for i in range(5)]
    print(a)	# 输出: [[], [], [], [], []]b = []
    for i in range(5):b.append([])
    print(b)
    
  • 二维列表创建方式2:直接定义二维列表

    list_name = [[元素11, 元素12, 元素13, 元素14],[元素21, 元素22, 元素23, 元素24],[元素31, 元素32, 元素33, 元素34]]
    print(list_name)	# 输出 一个 3 x 4 的列表
    
  • 二维列表创建方式3:使用嵌套for循环创建二维列表

    # 创建一个 3 x 4 的列表
    lis = []
    for i in range(3):lis.append([])for j in range(4):lis[i].append(j)
    print(lis)
    
  • 二维列表创建方式4:使用推导式生成二维列表

    list_name = [[i for i in range(4)] for j in range(3)]
    print(list_name)	# 3 x 4 列表
    

2. 列表的访问

  • 一维列表的访问

    ''' 取元素 '''
    list_name[0]	# 取第一个元素
    list_name[-1]	# 取最后一个元素
    list_name[:]	# 取所有元素
    list_name[m : n]	# 取[m, n)元素
    list_name[m :]		# 取m开始到结尾的所有元素''' 遍历 '''
    for item in list_name:print(item)length = len(list_name)
    index = 0
    while index < length:print(list_name[index])index += 1
    
  • 二维列表的访问: 注意没法用array数组的方式来读取每一列

    ''' 取元素 '''
    list_name[row_index][col_index]	# 行索引,列索引''' 按行读取 '''
    for row_item in list_name:print(row_item)	# 逐行遍历''' 按列读取 '''
    for col_index in range(4):columns = [item[col_index] for item in list_name]print(columns)	# 输出每一列# 用array的方式读取每一列失败
    print(list_name[:, 0])	# 意图输出所有行第一列失败''' 遍历 '''
    for row_index in len(list_name):for col_index in len(list_name[0]):print(list_name[row_index][col_index])for row_item in list_name:for item in row_item:print(item)		# 逐行逐列输出
    

3. 列表的更新

  • 直接修改元素值

    1_d_list[0] = 'new_element'
    2_d_list[0][1] = 'new_element'
    
  • 使用append新增元素

    1_d_list.append(new_element)
    2_d_list.append([new_list])
    
  • 在某处插入元素

    1_d_list.insert(0, 'new')	# insert(index,obj)将元素插入到列表的index位置处# 举例
    list_name = ['D', 1, 2, 3, 4]
    list_name.insert(1, 'E')
    print(list_name)	# 输出 ['D', 'E', 1, 2, 3, 4]
    
  • 在列表末尾添加多个值:注意添加的序列必须是可迭代对象

    list_1 = [1, 2, 3]
    list_2 = [4, 5, 6]
    list_1.extend(list_2)
    print(list_1)	# 输出 [1, 2, 3, 4, 5, 6]
    

4. 列表的删除

  • 使用 del 删除元素

    my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
    del my_list[2:5]	# 删除[2, 5)之间的元素
    print(my_list)		# 输出 [1, 2, 6, 7, 8, 9]
    
  • 使用 pop(index = -1) 移除元素:index默认为-1可以修改

    # 例1
    list_1 = [1, 2, 3, 4, 1]
    list_1.pop()
    print(list_1)			# 输出 [1, 2, 3, 4]
    list_1.pop(0)			# 输出 [2, 3, 4]# 例2
    my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
    indices_to_remove_index = [2, 4, 6]
    indices_to_remove_index.sort(reverse=True)	# 从后往前删,避免索引错位 [6, 4, 2]
    for index in indices_to_remove_index:my_list.pop(index)
    print(my_list)			# 输出 [1, 2, 4, 6, 8, 9]
    
  • 使用 remove(obj) 移除列表中第一次出现的 obj 元素

    # 例1
    list_1 = [1, 2, 3, 4, 1]
    list_1.remove(1)
    print(list_1)			# 输出 [2, 3, 4, 1]# 例2
    my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
    elements_to_remove = [3, 5, 7]
    for element in elements_to_remove:my_list.remove(element)
    print(my_list)			# 输出 [1, 2, 4, 6, 8, 9]
    
  • 使用 clear 清空列表

    list_1 = [1,2,3,4,5]
    list_1.clear()
    print(list_1)			# 输出 []
    
  • pop()方法和remove()不推荐使用,因为删除元素后列表大小会变,导致列表索引也会改变,容易出错

5. 列表的元素查找

  • 使用index()方法:查找列表中元素第一次出现的位置

    index(obj,start = 0 , end = -1)obj: 要查找的元素start: 查找的起始位置end: 查找的结束位置(不包含该位置)
    
    # 遍历查找# 使用index()方法
    list_1 = [1,2,3,4,5]
    list_1.index(3)		# 返回索引 2
    

6. 列表的脚本操作符

[1,2,3]+[4,5,6]	-> [1,2,3,4,5,6]		# 组合['Hi!'] * 4 ->	['Hi!', 'Hi!', 'Hi!', 'Hi!']	# 重复3 in [1,2,3] -> True					# 元素是否存在于列表中

7. 列表的函数/方法

  • 求列表长度/大小

    len(list)	# 一维列表: 元素个数; 二维列表:返回行数
    
  • 比较两个列表的大小

    cmp(list1, list2)
    # 如果是数字,按大小比较
    # 如果一方数字,另一方非数字,数字是最小的
    # 如果都不是数字,按字母顺序比较 a < b,a > A等# list1 > list2, 返回1
    # list1 < list2, 返回-1
    # list1 = list2, 返回0
    
  • 求列表的最大最小元素

    max(list)	# 返回最大元素
    min(list)	# 返回最小元素
    
  • 统计列表中某个元素出现的次数

    list1 = [1,2,3,4,1,2,1,2,1]
    print(list1.count(1))	# 输出 4,1出现4次
    
  • 对列表元素进行排序: sort默认升序,设置reverse = True则为降序排列

    list1 = [3,5,6,1,2,9]
    list1.sort()print(list1)		# [1, 2, 3, 5, 6, 9]list1.sort(reverse = True)print(list1)		# [9, 6, 5, 3, 2, 1]
    
  • 列表元素反转,反向排序: reverse()函数

    list1 = [4,3,1,6,7]
    list1.reverse()print(list1)	# [7, 6, 1, 3, 4]
    

8. 列表的一些其他操作

  • 判断一个元素是否在列表内

    # 1. 遍历查找
    # 2. 使用index()函数: 存在则返回第一个匹配元素的索引位置,不存在则抛出异常,所以可以如下写index = -1
    index = list.index(obj)
    if index != -1:print('obj is found!')# 3. 使用.count()方法:判断某个元素在列表中出现的次数
    num = list.count(element)
    
  • 将二维列表转换为一维列表

    # 1. 遍历转换: 两层for循环
    list1 = [[1, 2], [3, 4]]
    new_list = [item for list in list1 for item in list]
    print(new_list)# 2. list->array->list, array使用flatten方法
    import numpy as np
    list1 = [[1, 1], [2, 2]]
    list1 = np.array(list1)
    ans = list1.flatten()
    ans = ans.tolist()
    
  • 列表作为函数参数

    • 可变类型:list ,dict

    • 不可变类型:int , string , float ,tuple

    • 列表作为函数参数,运行函数会改变原始列表数据,如下

      a = [1, 2, 'A']def F(A):A.pop()print(A)	# 输出 [1, 2]F(a)
      print(a)		# 输出 [1, 2]
      
    • 如果不希望这种情况发生,可以先拷贝一份,避免破坏原始数据

      a = [1, 2, 'A']def F(A):lst_copy = A.copy()		# 当列表有多重列表时,需要用deepcopylst_copy.pop()print(lst_copy)		# 输出 [1, 2]F(a)
      print(a)				# 输出 [1, 2, 'A'] 没变
      

 


【参考文章】

[1]. python列表创建的方式
[2]. 二维列表的遍历
[3]. 二维列表的创建
[4]. 二维列表按行按列访问
[5]. 二维列表不能直接切片
[6]. 二维列表的创建与访问
[7]. 删除列表中多个元素
[8]. 列表元素删除方法比较
[9]. 列表操作详解
[10]. 列表的基本用法
[11]. 列表的基本用法
[12]. 判断元素是否在列表内
[13]. 二维列表转换为一维
[14]. 列表作为函数形参
[15]. 列表作为传参copy

created by shuaixio, 2023.12.02

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/193385.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【算法每日一练]-图论(保姆级教程篇12 tarjan篇)#POJ3352道路建设 #POJ2553图的底部 #POJ1236校园网络 #缩点

目录 POJ3352&#xff1a;道路建设 思路&#xff1a; POJ2553&#xff1a;图的底部 思路&#xff1a; POJ1236校园网络 思路&#xff1a; 缩点&#xff1a; 思路&#xff1a; POJ3352&#xff1a;道路建设 由于道路要维修&#xff0c;维修时候来回都不能走&#xff0c;现要…

MDK提示:在多字节的目标代码中,没有此Unicode 字符可以映射到的字符

MDK警告提示在多字节的目标代码中&#xff0c;没有此Unicode 字符可以映射到的字符 警告提示&#xff1a; 在写MDK的工程代码时&#xff0c;发现代码中引入的头文件前方出现一些红色的叉叉&#xff0c;但是编译工程并不报错&#xff0c;功能也能正常执行的&#xff0c;只是提…

JS利用时间戳倒计时案例

我们在逛某宝&#xff0c;或者逛某东时&#xff0c;我们时常看到一个倒计时&#xff0c;时间一到就开抢&#xff0c;这个倒计时是如何做的呢&#xff1f;让我为大家介绍一下。 理性分析一下&#xff1a; 1.用将来时间减去现在时间就是剩余的时间 2.核心&#xff1a;使用将来的时…

工业机器视觉megauging(向光有光)使用说明书(十五,轻量级的visionpro)

程序&#xff08;软件&#xff09;的一些不足和建议&#xff1a;&#xff08;后续会跟进&#xff09; 不足&#xff1a;&#xff08;如果你发现了&#xff0c;谢谢及时提出来&#xff09; 1&#xff0c;找线工具有噪点抑制功能&#xff1b;blob跟随工具&#xff0c;匹配跟随工…

C指针介绍(1)

文章目录 每日一言指针的简单介绍内存和地址指针在内存中的存储指针的定义和声明泛型指针 指针的关系运算算数运算关系运算 结语 每日一言 ⭐「 一声梧叶一声秋&#xff0c;一点芭蕉一点愁&#xff0c;三更归梦三更后。 」–水仙子夜雨-徐再思 指针的简单介绍 C语言指针是C语…

人工智能轨道交通行业周刊-第67期(2023.11.27-12.3)

本期关键词&#xff1a;列车巡检机器人、城轨智慧管控、制动梁、断路器、AICC大会、Qwen-72B 1 整理涉及公众号名单 1.1 行业类 RT轨道交通人民铁道世界轨道交通资讯网铁路信号技术交流北京铁路轨道交通网上榜铁路视点ITS World轨道交通联盟VSTR铁路与城市轨道交通RailMetro…

python调用打印机并打印

【01获取打印机列表】 要获取Python中的打印机列表&#xff0c;可以使用win32print模块&#xff08;适用于Windows系统&#xff09;或cups模块&#xff08;适用于Linux和macOS系统&#xff09;。 以下是使用这两个模块分别获取打印机列表的示例代码&#xff1a; **在Windows…

算法工程师面试八股(搜广推方向)

文章目录 机器学习线性和逻辑回归模型逻辑回归二分类和多分类的损失函数二分类为什么用交叉熵损失而不用MSE损失&#xff1f;偏差与方差Layer Normalization 和 Batch NormalizationSVM数据不均衡特征选择排序模型树模型进行特征工程的原因GBDTLR和GBDTRF和GBDTXGBoost二阶泰勒…

React使报错不再白屏

如果代码中出现问题导致报错&#xff0c;通常会使页面报错&#xff0c;导致白屏 function Head() {// 此时模拟报错导致的白屏return <div>Head --- {content}</div> } export default () > {return (<><div>下面是标题</div><Head />…

若依框架分页

文章目录 一、分页功能解析1.前端代码分析2.后端代码分析3. LIMIT含义 二、自定义MyPage,多态获取total1.定义MyPage类和对应的调用方法 一、分页功能解析 1.前端代码分析 页面代码 封装的api请求 接口请求 2.后端代码分析 controller代码 - startPage() getDataTable(…

yolo.txt格式与voc格式互转,超详细易上手

众所周知,yolo训练所需的标签文件类型是.txt的,但我们平时使用标注软件(labelimage等)标注得到的标签文件是.xml类型的,故此xml2txt之间的转换就至关重要了,这点大家不可能想不到,但是网上的文章提供的代码大多数都是冗余,或者难看,难以上手,故此作者打算提供一个相对…

String StringBuilder

String 特点&#xff1a; 1.双引号的字符串是String类的对象&#xff0c;可以点方法 2.字符串一旦创建&#xff0c;其内容不可改变 3.字符串常量池可以共享 方法 equals()&#xff1a;比较字符串的内容toCharArray()&#xff1a;转为字符数组字符串.charAt(int index)&#x…

Sharding-Jdbc(3):Sharding-Jdbc分表

1 分表分库 LogicTable 数据分片的逻辑表&#xff0c;对于水平拆分的数据库(表)&#xff0c;同一类表的总称。 订单信息表拆分为2张表,分别是t_order_0、t_order_1&#xff0c;他们的逻辑表名为t_order。 ActualTable 在分片的数据库中真实存在的物理表。即上个示例中的t_…

怎样使用rtsp,rtmp摄像头低延时参于Web视频会议互动直播

业务系统中有大量的rtsp&#xff0c;rtmp等监控直播设备&#xff0c;原大部分都是单一业务监控直播之类&#xff0c;目前很多业务需要会议互动&#xff0c;需要监控参会&#xff0c;提出需摄像头拉流参会的需求&#xff0c;由于rtmp&#xff0c;rtsp原生不支持web播放&#xff…

UVa1583生成元(Digit Generator)

题目 如果x加上x的各个数字之和得到y&#xff0c;也就是说x是y的生成元。给出n(1<n<100000)&#xff0c;求最小生成元。无解则输出0。 输入输出样例 输入 3 216 121 2005输出 198 0 1979思路 要想解决这个题目&#xff0c;只需要对每一个输入的值从1开始遍历找到小于…

vue3-在自定义hooks使用useRouter 报错问题

文章目录 前言一、报错分析报错的Vue warn截图&#xff1a;查看文档 二、那么在hook要怎么引入路由呢&#xff1f; 前言 记录在vue3项目中&#xff0c;hook使用useRouter 报错问题 一、报错分析 报错的Vue warn截图&#xff1a; 警告 inject() can only be used inside setup…

【LeetCode刷题笔记】103. 二叉树的锯齿形层序遍历

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 更多算法知识专栏&#xff1a;算法分析&#x1f525; 给大家跳段街舞感谢…

数据链路层之广域网、PPP协议、HDLC协议

学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持&#xff0c;想组团高效学习… 想写博客但无从下手&#xff0c;急需…

【C语言之 CJson】学CJson看这一篇就够了

文章目录 前言一、下载CJson二、创建一个json2.1 创建json对象cJSON类型详解 2.2 创建键值对2.3 添加嵌套的 JSON 对象2.4 添加数组创建数组添加元素到数组添加数组到obj 2.5 将 JSON 对象转为字符串2.6 释放内存2.7 示例代码 三、解析json3.1 解析json root3.2 把一个key解析出…

springboot足球社区管理系统

springboot足球社区管理系统 成品项目已经更新&#xff01;同学们可以打开链接查看&#xff01;需要定做的及时联系我&#xff01;专业团队定做&#xff01;全程包售后&#xff01; 2000套项目视频链接&#xff1a;https://pan.baidu.com/s/1N4L3zMQ9nNm8nvEVfIR2pg?pwdekj…