Python 基础数据类型详解:列表、元组与 range
前言在 Python 编程中列表list和元组tuple是最核心的基础数据类型二者功能相似但特性差异显著而range则是生成数字序列的常用工具常与循环搭配使用。本文将从概念、增删改查、嵌套、特性对比等维度全面解析这三种核心内容新手友好干货满满一、列表list可变有序容器1. 列表基础介绍列表是 Python 最常用的数据类型用方括号 []包裹元素用逗号分隔可存放任意数据类型数字、字符串、列表、元组、字典等且长度无限制32 位 Python 支持约 5 亿元素64 位支持超千亿元素。核心特性有序、可变、可迭代、支持索引 / 切片。# 示例包含多种数据类型的列表 lst [1, 哈哈, 吼吼, [1,8,0,百度], (我,叫, 元, 组), {name:dict字典}] print(lst)2. 列表的索引与切片列表索引规则与字符串一致正向索引从 0 开始反向索引从 - 1 开始切片格式\[起始:结束:步长\]左闭右开。2.1 索引取值lst [麻花藤, 王剑林林, 马云, 周鸿医, 向华强] print(lst[0]) # 正向索引取第1个元素 → 麻花藤 print(lst[-1]) # 反向索引取最后1个元素 → 向华强2.2 切片取值# 基础切片 print(lst[0:3]) # 取前3个元素 → [麻花藤, 王剑林林, 马云] print(lst[:3]) # 起始省略默认从0开始 → 同上 print(lst[1:]) # 结束省略默认到末尾 → [王剑林林, 马云, 周鸿医, 向华强] # 带步长切片 print(lst[1::2]) # 从索引1开始步长2 → [王剑林林, 周鸿医] print(lst[2::-1]) # 倒序切片步长-1 → [马云, 王剑林林, 麻花藤]3. 列表的增删改查核心操作列表是可变对象可直接对原列表进行增删改无需生成新对象。3.1 增append、insert、extendappend\(元素\)末尾追加单个元素insert\(索引, 元素\)指定位置插入元素原元素后移extend\(可迭代对象\)迭代追加多个元素如列表、元组lst [麻花藤, 林俊杰, 周润发, 周芷若] # append末尾追加 lst.append(wusir) print(lst) # [麻花藤, 林俊杰, 周润发, 周芷若, wusir] # insert指定位置插入 lst.insert(1, 刘德华) print(lst) # [麻花藤, 刘德华, 林俊杰, 周润发, 周芷若, wusir] # extend迭代追加 lst.extend([麻花疼, 不疼]) print(lst)3.2 删pop、remove、clear、delpop\(索引\)按索引删除默认删末尾返回被删元素remove\(元素\)删除第一个匹配的指定元素不存在则报错clear\(\)清空列表保留空列表del 列表\[切片\]按切片批量删除lst [麻花藤, 王剑林林, 李嘉诚, 王富贵] # pop按索引删除 deleted lst.pop() # 删末尾 print(被删元素, deleted) # 王富贵 lst.pop(2) # 删索引2的元素 print(lst) # remove删除指定元素 lst.remove(麻花藤) print(lst) # clear清空列表 lst.clear() print(lst) # [] # del切片删除 lst [1,2,3,4,5] del lst[1:3] print(lst) # [1,4,5]3.3 改索引 / 切片修改索引修改直接赋值列表\[索引\] 新值切片修改步长为 1 时元素个数任意步长非 1 时个数必须匹配lst [太白, 太黑, 五色, 银王, 日天] # 索引修改 lst[1] 太污 print(lst) # 切片修改步长1 lst[1:4] [李嘉诚] print(lst) # 切片修改步长非1个数匹配 lst[1:4:2] [麻花藤, 哇靠] print(lst)3.4 查遍历、count、sort、reverse、len遍历for 循环直接迭代count\(元素\)统计元素出现次数sort\(\)原地排序默认升序reverseTrue降序reverse\(\)原地反转列表len\(列表\)获取列表长度lst [太白, 太黑, 太白, 银王] # 遍历 for el in lst: print(el) # count统计次数 print(lst.count(太白)) # 2 # sort排序 num_lst [3,1,4,2] num_lst.sort() print(num_lst) # [1,2,3,4] num_lst.sort(reverseTrue) print(num_lst) # [4,3,2,1] # reverse反转 lst.reverse() print(lst) # len长度 print(len(lst))4. 列表嵌套降维操作列表嵌套即列表中包含列表核心思路一层一层取降维处理。# 嵌套列表 lst [1, 太白, wusir, [马化疼, [可口可乐], 王剑林林]] # 1. 取wusir print(lst[2]) # 2. 取太白的白字 print(lst[1][1]) # 3. 将wusir首字母大写并更新 lst[2] lst[2].capitalize() print(lst) # 4. 将马化疼改为马化腾 lst[3][0] lst[3][0].replace(疼, 腾) print(lst[3][0]) # 5. 给内层列表追加元素 lst[3][1].append(雪碧) print(lst)二、元组tuple不可变有序容器1. 元组基础介绍元组俗称只读列表用小括号 ()包裹特性与列表相似有序、可迭代、支持索引 / 切片、可存任意数据类型但核心区别不可变元素不能修改。适用场景数据不允许被修改时如配置信息、函数返回值。# 元组定义 tu (1, 太白, 李白, 太黑) print(tu) print(type(tu)) # class tuple2. 元组核心特性不可变不可直接修改顶层元素修改会报错若元素是可变对象如列表则可变对象内部可修改单元素元组必须加逗号否则为普通变量# 1. 直接修改顶层元素 → 报错 # tu[1] 马云 # TypeError # 2. 元素为列表时内部可修改 tu (1, 哈哈, [], 呵呵) tu[2].append(麻花藤) print(tu) # (1, 哈哈, [麻花藤], 呵呵) # 3. 单元素元组必须加逗号 tu1 (1) print(type(tu1)) # class int普通整数 tu2 (1,) print(type(tu2)) # class tuple元组3. 元组常用操作支持索引、切片、遍历、count、index、len用法与列表一致tu (太白, 太黑, 太白, 银王) # 索引/切片 print(tu[0]) print(tu[1:3]) # 遍历 for el in tu: print(el) # count/index/len print(tu.count(太白)) print(tu.index(银王)) print(len(tu))4. 元组嵌套嵌套规则与列表一致仅顶层元素不可变内层可变对象可修改tu (1, (李白, [诗仙]), 杜甫) # 修改内层列表 tu[1][1].append(浪漫主义) print(tu)三、range生成数字序列1. range 基础介绍range是 Python 内置函数用于生成整数序列常与 for 循环搭配节省内存不直接生成列表而是按需生成。语法range\(起始, 结束, 步长\)起始默认 0结束左闭右开不包含结束值步长默认 1可正可负2. range 常用示例# 1. 起始默认0步长默认1 for num in range(5): print(num) # 0 1 2 3 4 # 2. 指定起始、结束、步长正序 for num in range(1, 10, 2): print(num) # 1 3 5 7 9 # 3. 步长为负倒序 for num in range(10, 1, -2): print(num) # 10 8 6 4 2 # 4. 转换为列表 print(list(range(3, 9))) # [3,4,5,6,7,8]四、列表 vs 元组核心对比特性列表list元组tuple符号[]()可变性可变增删改不可变只读内存占用较大较小更高效适用场景数据需频繁修改数据固定、不可修改单元素定义直接写\[1\]必须写\(1,\)总结列表可变有序容器支持增删改查适合动态数据核心操作append、insert、extend、pop、remove。元组不可变有序容器只读安全适合固定数据单元素必须加逗号。range生成整数序列搭配 for 循环高效遍历节省内存。掌握这三种数据类型是 Python 入门的关键后续字典、集合等类型的学习也会基于此