news 2026/4/4 21:48:41

python基础之数据容器与函数

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
python基础之数据容器与函数

数据容器是存储和管理数据的核心工具,其核心作用是 “批量存储数据”,数据容器包括(列表、元组、字典)。

列表

列表是 Python 最常用的容器,能存储任意类型数据(数字、字符串、甚至其他容器),支持增删改查,适合需要动态调整的数据集。

列表创建方式:

# 空列表 list1 = [] # 普通列表(混合类型) list2 = [1, "Python", True, [2, 3]] # 快速生成列表(range/列表推导式) list3 = list(range(1, 6)) # [1,2,3,4,5] list4 = [x*2 for x in range(3)] # [0,2,4]

列表的常用方法:

# append(val):末尾添加单个元素。 #参数:val(要添加的任意类型元素) list2.append(10) # extend(iterable):末尾追加可迭代对象(如列表、元组) # 参数:iterable(可迭代对象,元素会被逐个加入列表) list2.extend([6, 7]) # insert(index, val):指定位置插入元素 # 参数1:index(插入的目标索引,原索引及之后元素后移) # 参数2:val(要插入的任意类型元素) list2.insert(1, "Java") # pop(index):删除指定索引元素,默认删除最后一个 # 参数:index(可选,要删除的元素索引,默认-1) # 返回值:被删除的元素 deleteVal = list2.pop(0) # remove(val):删除第一个匹配的元素 # 参数:val(要删除的元素值,需存在于列表中) list2.remove(2) # index(val):查找元素首次出现的索引 # 参数:val(要查找的元素值,需存在于列表中) # 返回值:元素对应的索引 index1 = list2.index("Python") # sort():对列表原地排序(修改原列表) # 可选参数:reverse=True/False(默认为True,升序排列,false是降序排列)、 key(排序的依据函数) list3.sort() # sorted():返回排序后的新列表(不修改原列表) # 参数:iterable(要排序的列表),其他参数同sort() new_sorted_list = sorted(list, reverse=True) # len(list):获取列表长度 # 参数:list(目标列表) # 返回值:列表中元素的个数 list_length = len(list2)

注意:

1. 索引大于列表长度,在使用时会越界产生报错,因此使用索引时需先判断索引范围;

2.嵌套列表可通过多层索引访问,例如:list2[3][1]→ 取子列表 [2,3] 的第二个元素 3。

元组

元组时不可修改的有序集合,也可以说是 “只读版的列表”,一旦创建无法修改元素,性能优于列表,适合存储固定不变的数据(如坐标、函数返回多值)。

创建方式:

# 普通元组 tuple1 = (1, 2, "test") # 空元组 tuple2 = () # 元组中只包含一个元素时必须在后面加逗号,否则会被视为普通变量 tuple3 = (5,) # 正确 tuple4 = (5) # 错误,实际是整数5 # 省略括号(元组打包) (不推荐使用) tuple5 = 10, 20, 30

元组的常用方法和函数:

# index(val):查找元素首次出现的索引 # 参数:val(要查找的元素值,需存在于元组中) # 返回值:元素对应的索引 index_result = tuple1.index(2) # count(val):统计元素出现的次数 # 参数:val(要统计的元素值) # 返回值:元素在元组中出现的次数 count_result = tuple1.count(1) # len(tuple):获取元组的长度(元素个数) # 参数:tuple(目标元组) # 返回值:元组的元素数量 tuple_length = len(tuple1) # 解包:将元组元素依次赋值给多个变量 # 规则:变量数量需与元组元素数量一致 a, b, c = tuple1

注意:

1.不可修改仅指 “元素本身”(此部分牵扯到数据容器在内存的存储方式):若元组嵌套列表,列表内部可修改(如t = (1, [2,3]); t[1].append(4)合法);

2.函数返回多值本质是元组:def func(): return 1,2 → a,b = func()等价于接收元组;

3.元组可作为字典的键(列表不行):dict_key = {(1,2): "value"}合法。

字典

字典是键值对的无序集合,字典以 “键 - 值(key-value)” 为单位存储数据,键唯一且不可变(字符串 / 数字 / 元组),值可任意修改)。

创建方式:

# 普通字典 dict1 = {"name": "张三", "age": 20, "gender": "男"} # 空字典 dict2 = {} # 字典推导式 dict3 = {x: x*2 for x in range(3)} # {0:0, 1:2, 2:4} # 从键值对列表创建 dict4 = dict([("a", 1), ("b", 2)])

常用方法和函数:

# 1. 准备一个示例字典来解释其函数和方法 dict1 = {"name": "张三", "age": 20, "gender": "男"} # 初始字典 # keys():获取所有键(返回可迭代的dict_keys对象) # 无参数 keys_result = dict1.keys() # 执行后keys_result → dict_keys(['name', 'age', 'gender']) # 可转成列表使用:list(keys_result) → ['name', 'age', 'gender'] # values():获取所有值(返回可迭代的dict_values对象) # 无参数 values_result = dict1.values() # 执行后values_result → dict_values(['张三', 20, '男']) # items():获取所有键值对(返回包含(key,value)元组的可迭代对象) # 无参数 items_result = dict1.items() # 执行后items_result → dict_items([('name', '张三'), ('age', 20), ('gender', '男')]) # keys、values、items常用于遍历中: for key in dict1.keys(): print(key) for value in dict1.values(): print(value) for k, v in dict1.items(): print(f"{k}: {v}") # get(key, 默认值):获取指定键的值,键不存在时返回默认值 # 参数1:key(要查找的键) # 参数2:默认值(可选,键不存在时返回,默认None) height = dict1.get("height", 170) # 执行后height → 170(因为dict1中无"height"键,返回默认值170) # pop(key):删除指定键,并返回对应的值 # 参数:key(要删除的键,需存在于字典中) # 返回值:被删除键对应的value pop_value = dict1.pop("age") # 执行后dict1 → {"name": "张三", "gender": "男"},pop_value → 20 # update(dict):批量更新/添加键值对 # 参数:dict(包含要更新/添加的键值对的字典) dict1.update({"age": 21, "city": "北京"}) # 执行后dict1 → {"name": "张三", "gender": "男", "age": 21, "city": "北京"} # len(dict):获取字典中键值对的数量 # 参数:目标字典 length = len(dict1) # 执行后length → 4(当前dict1有4个键值对)

注意:

1.键必须是唯一的,重复定义键会产生覆盖(如{"a":1, "a":2}最终是{"a":2});

2.键是不可变的,且列表不能作为键,因为列表是可变的,元组可以;

3.字典是无序的:不依赖索引顺序来进行查找,按键查找才是最快最便捷的方式。

列表、元组、字典的对比:

函数

函数是将 “特定逻辑” 封装成独立模块,实现代码复用、降低冗余的核心机制,核心是 “定义 - 调用” 的闭环。

其中涉及的一些概念:

封装:将一段重复执行的代码包裹成函数,调用时只需写函数名,无需重复写代码;

形参:函数定义时的参数(占位符),如def add(a, b)中的 a、b;

实参:函数调用时传入的具体值,如add(1,2)中的 1、2;

返回值:函数执行后输出的结果(通过return关键字),无 return 则返回None

函数的定义与调用

# 定义函数: def 函数名(形参): 逻辑体 return def add(a, b): #两数相加 result = a + b return result # 返回计算结果 # 调用函数:函数名(实参) res = add(3, 5) # 实参3、5传给形参a、b,res接收返回值8 print(res) # 输出8

函数的参数传递

1.位置参数(默认)

按 “形参定义顺序” 传入实参,顺序错误会导致结果异常,即函数可以有多个参数,每个参数之间用逗号‘,’隔开,这些参数在调用传入实参时会被位置参数按顺序接收。

2.关键字参数

按 “键 = 值” 形式传参,无需关注顺序,可读性更高,直接使用 ‘形参名字=实参’ 进行传参。

3.可变参数,也叫不定长参数

*args:接收任意数量的位置参数,打包成元组;

**kwargs:接收任意数量的关键字参数,打包成字典;

#不定长参数,会将接收到的参数打包成元组使用 def sum_all(*args): total = 0 for num in args: total += num return total print(sum_all(1,2,3)) # 输出6,args=(1,2,3) #不定长关键字参数,将接收到的参数打包成字典使用 def print_kwargs(**kwargs): for k, v in kwargs.items(): print(f"{k}: {v}") print_kwargs(name="赵六", city="上海") # kwargs={"name":"赵六","city":"上海"}

函数嵌套

函数内部可定义 / 调用另一个函数,内层函数可访问外层函数的变量(闭包基础)。

def outer_func(a): # 内层函数 def inner_func(b): return a + b # 访问外层函数的变量a # 调用内层函数 return inner_func(5) print(outer_func(3)) # 输出8:3+5

注意:

1.函数内部定义的变量默认是 “局部变量”,仅在函数内生效;如需使用全局变量,需加global进行声明;

2.函数也可作为参数传递,可传给其他函数;

3.一定避免重复定义函数,同名函数会覆盖之前的定义,需注意命名唯一性。并且尽量将函数的名字命名得和功能有联系。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/3 16:33:35

Http概述

文章目录Web基础-HTTP1、什么是项目2、什么是架构?3、架构所需关键词4、什么是集群?5、什么是负载均衡?6、http概述6.1、Web状态访问码6.2、Web的结构组成6.3、有哪些Web资源?6.4、HTTP的工作原理6.5、HTTP请求响应6.6、HTTP相关术…

作者头像 李华
网站建设 2026/4/3 0:11:46

线性系统(非线性系统)

线性系统(非线性系统) 若任意x(t)–系统–>y(t) ,则有ax(t)–系统–>ay(t)x1(t)–系统–>y1(t) x2(t)–系统–>y2(t) > x1(t) x2(t) --系统–> y1(t) y2(t)同时满足12 则是线性系统 齐次性 叠加性线性系统举例&#…

作者头像 李华
网站建设 2026/4/2 23:00:30

LaTeX公式转换终极指南:从网页到Word的完整解决方案

在学术写作和科研工作中,LaTeX公式与Word文档的格式转换一直是研究人员面临的常见挑战。传统方法需要手动重新输入复杂的数学表达式,不仅耗时费力,还容易引入错误。LaTeX2Word-Equation作为一款专业的Chrome扩展工具,完美解决了这…

作者头像 李华
网站建设 2026/4/3 16:29:24

飞书文档批量导出神器:跨平台高效备份解决方案

飞书文档批量导出神器:跨平台高效备份解决方案 【免费下载链接】feishu-doc-export 项目地址: https://gitcode.com/gh_mirrors/fe/feishu-doc-export 在数字化办公日益普及的今天,企业文档管理面临着前所未有的挑战。当公司从飞书切换到其他办公…

作者头像 李华
网站建设 2026/4/3 18:28:04

【MediaPipe的手势识别系统】

上图先 import sys import cv2 import logging import mediapipe as mp import numpy as np from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QVBoxLayout, QHBoxLayout, QWidget, QTextEdit, QPushButton from PyQt5.QtGui import QImage, QPixmap, QFont f…

作者头像 李华
网站建设 2026/4/2 18:37:38

HiveSQL 中的集合运算详解

在大数据分析过程中,整合多源数据的需求十分常见,此时集合运算发挥着关键作用。本文将重点介绍HiveSQL中的集合运算方法,助力数据分析师高效完成复杂的数据整合工作。为什么需要集合运算?假设你手头有来自多个业务系统的用户数据&…

作者头像 李华