【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

相关推荐
copyer_xyf14 分钟前
LangChain 调用 LLM
后端·python·agent
copyer_xyf23 分钟前
Prompt 组织管理
后端·python·agent
shimly1234561 小时前
python3 uvicorn 是啥?
python
CTA量化套保2 小时前
期货量化程序 time.sleep 卡死:天勤单线程与 deadline 替代
python·区块链
GIS数据转换器2 小时前
城市排水生命线安全运行监测平台深度解析
java·运维·人工智能·python·安全·数据挖掘·无人机
贤哥哥yyds3 小时前
GBK转UTF\-8编码自动转换工具 使用文档
python
数量技术宅3 小时前
2026量化前沿:从Reddit热帖到Python实战,如何用赫斯特指数(Hurst)狙击虚假突破?
开发语言·python
华如锦3 小时前
面了很多 Java转AI Agent方向,一些面试题总结
java·开发语言·人工智能·python·ai
戴西软件3 小时前
戴西 DLM 许可授权管理系统:破解无网络环境下工业软件授权难题,助力制造企业降本增效
网络·人工智能·python·深度学习·程序人生·算法·制造
Dxy12393102163 小时前
Python线程锁:为什么多线程会“打架“,以及怎么解决
开发语言·前端·python