【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

相关推荐
Hoper.J10 分钟前
PyTorch 模型保存与加载的三种常用方式
人工智能·pytorch·python
弱冠少年1 小时前
websockets库使用(基于Python)
开发语言·python·numpy
技术无疆1 小时前
【Python】Streamlit:为数据科学与机器学习打造的简易应用框架
开发语言·人工智能·python·深度学习·神经网络·机器学习·数据挖掘
羊小猪~~1 小时前
机器学习/数据分析--用通俗语言讲解时间序列自回归(AR)模型,并用其预测天气,拟合度98%+
人工智能·python·机器学习·数据挖掘·数据分析·回归·时序数据库
qq_273900232 小时前
解析TMalign文本文件中的转换矩阵
python·生物信息学
阿华的代码王国2 小时前
【JavaEE】——文件IO的应用
开发语言·python
电饭叔3 小时前
《python语言程序设计》2018版第8章19题几何Rectangle2D类(下)-头疼的几何和数学
开发语言·python
程序猿小D3 小时前
第二百六十七节 JPA教程 - JPA查询AND条件示例
java·开发语言·前端·数据库·windows·python·jpa
杰哥在此5 小时前
Python知识点:如何使用Multiprocessing进行并行任务管理
linux·开发语言·python·面试·编程
zaim17 小时前
计算机的错误计算(一百一十四)
java·c++·python·rust·go·c·多项式