【python】python列表的用法记录

文章目录

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

序言

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

1. 列表的创建

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

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

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

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

    python 复制代码
    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:推导式生成列表

    python 复制代码
    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:创建空二维列表

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

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

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

    python 复制代码
    list_name = [[i for i in range(4)] for j in range(3)]
    print(list_name)	# 3 x 4 列表

2. 列表的访问

  • 一维列表的访问

    python 复制代码
    ''' 取元素 '''
    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数组的方式来读取每一列

    python 复制代码
    ''' 取元素 '''
    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. 列表的更新

  • 直接修改元素值

    python 复制代码
    1_d_list[0] = 'new_element'
    2_d_list[0][1] = 'new_element'
  • 使用append新增元素

    python 复制代码
    1_d_list.append(new_element)
    2_d_list.append([new_list])
  • 在某处插入元素

    python 复制代码
    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]
  • 在列表末尾添加多个值:注意添加的序列必须是可迭代对象

    python 复制代码
    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 删除元素

    python 复制代码
    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可以修改

    python 复制代码
    # 例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 元素

    python 复制代码
    # 例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 清空列表

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

5. 列表的元素查找

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

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

6. 列表的脚本操作符

python 复制代码
[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. 列表的函数/方法

  • 求列表长度/大小

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

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

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

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

    python 复制代码
    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()函数

    python 复制代码
    list1 = [4,3,1,6,7]
    list1.reverse()
    
    print(list1)	# [7, 6, 1, 3, 4]

8. 列表的一些其他操作

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

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

    python 复制代码
    # 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

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

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

      python 复制代码
      a = [1, 2, 'A']
      
      def F(A):
          lst_copy = A.copy()		# 当列表有多重列表时,需要用deepcopy
          lst_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

相关推荐
深蓝海拓11 小时前
基于QtPy (PySide6) 的PLC-HMI工程实战记录(七)创建适合HMI项目的数字输入/显示类部件
python
MartinYeung511 小时前
[论文学习]MPIB:医疗提示注入基准——针对LLM临床安全性的系统性评估
人工智能·python·学习
用户83562907805111 小时前
使用 Python 为 PowerPoint 演示文稿添加评论
后端·python
阿图灵12 小时前
OpenCV 绘图五件套:画圆、文本、线段、矩形与椭圆
图像处理·人工智能·python·opencv·计算机视觉·绘图
web行路人12 小时前
AI全栈之旅 · 第一周总结
python
slacker-kian12 小时前
HuggingFace API加载模型超时:用 ModelScopeAPI 替代
人工智能·python·transformer·huggingface·blip·modelscope·blipprocessor
七夜zippoe12 小时前
DolphinDB 高可用部署实战:从容灾设计到故障自动转移
开发语言·python·高可用·容灾·dolphindb
l12586512 小时前
# LangGraph Deep Research Agent 全流程设计:多轮研究、人机协同与真实来源管理
数据库·人工智能·python·算法·自然语言处理·oracle·langchain
青少儿编程课堂13 小时前
图形化编程实战:智能交通灯调度台,一个作品讲透循环、条件与广播
c++·python·算法·bfs·信息学竞赛