【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

相关推荐
看浪的路人4 分钟前
第5讲:代码审查与 Bug 检测
开发语言·windows·python
weixin_BYSJ198738 分钟前
【java项目分享】springboot阅读推荐平台10600
java·javascript·spring boot·python·django·flask·php
阿kun要赚马内43 分钟前
工具在langchain agent中的调用
人工智能·后端·python
GrowthDiary0071 小时前
Python 常用函数总结
开发语言·python
2601_957883841 小时前
2026年8月:外星人笔记本维修服务揭秘
python·电脑
eric-sjq1 小时前
仅0.6B参数如何锁住超长记忆?Xiaothink-T17-RWKV5-MLA 架构深度解析:RWKV-v5 × MLA 的“降维打击“
python·架构
张小凡vip2 小时前
Python爬虫实战:高效稳定的文件下载模块设计与实现
开发语言·爬虫·python
小趴蔡ha10 小时前
02 Anaconda、Python 与机器学习开发环境入门
python·机器学习·anaconda
2401_8685347810 小时前
RTOS之RT-Thread & Linux:线程/进程管理与调度核心差异分析
c++·python
数字化转型分享点滴11 小时前
富士康、蓝思科技为何选择四化信息?MES制造执行系统的实践
python·科技