• Python
  • Python 基础数据结构学习笔记(字典、列表、元组、字符串)

  • @ 2025-6-24 20:18:54

Python 基础数据结构学习笔记(字典、列表、元组、字符串)

一、前言

这节编程课围绕 Python 常用数据结构(字典、列表、元组、字符串 )展开,包含创建、操作、遍历等知识点,适合 0 基础同学,结合代码示例 + 注释,轻松理解~

二、字典(dict)—— 键值对的集合

(一)创建字典

方式 1:直接用键值对创建

# 用 {键: 值, 键: 值} 形式,键一般是字符串/数字,值可以是任意类型
d1 = {"键1": 100, "键2": 50}  
print(d1)  # 输出: {'键1': 100, '键2': 50}

方式 2:创建空字典

d2 = {}  # 空字典,后续可添加内容
# 打印字典和类型,dict 就是 Python 存键值对的类型
print(d2, type(d2))  # 输出: {} <class 'dict'> 

方式 3:用 dict() 函数 + 关键字参数创建

# 关键字参数传参,键会自动转字符串,值任意类型
d3 = dict(addr="中国", name="张三", age=15)  
print(d3)  # 输出: {'addr': '中国', 'name': '张三', 'age': 15}

方式 4:用 dict() 函数 + 元组列表创建

# 元组列表里每个元组是 (键, 值),适合动态生成键的场景
d4 = dict([("addr", "中国"), ("name", "张三"), ("age", 65)])  
print(d4)  # 输出: {'addr': '中国', 'name': '张三', 'age': 65}

方式 5:用 fromkeys() 方法创建(值默认 None

# 以列表元素为键,值默认 None,也可加第二个参数指定值(如 dict.fromkeys(keys, 0) )
d5 = dict.fromkeys(["addr", "name", "age", "sex"])  
print(d5)  # 输出: {'addr': None, 'name': None, 'age': None, 'sex': None}

(二)字典遍历

目标:遍历字典 dt = {'a': [1,3,5], 'b': [3,4,7], 'c': [2,5,9]},获取值 [1,3,5] [3,4,7] [2,5,9]

方式 1:遍历值(values()

dt = {'a': [1, 3, 5], 'b': [3, 4, 7], 'c': [2, 5, 9]}
ls = []
for i in dt.values():  # values() 直接拿字典里的“值”
    ls.append(i)
    print(i)  # 依次输出 [1,3,5] [3,4,7] [2,5,9]

方式 2:遍历键,再取对应值(默认遍历键)

dt = {'a': [1, 3, 5], 'b': [3, 4, 7], 'c': [2, 5, 9]}
ls = []
for i in dt:  # 不写方法,默认遍历“键”('a'、'b'、'c' )
    ls.append(dt[i])  # 用 键 取 对应值
for j in ls:
    print(j)  # 依次输出 [1,3,5] [3,4,7] [2,5,9]

方式 3:遍历键(keys()),再取对应值

dt = {'a': [1, 3, 5], 'b': [3, 4, 7], 'c': [2, 5, 9]}
ls = []
for k in dt.keys():  # keys() 拿字典里的“键”
    ls.append(dt[k])  # 用 键 取 对应值
for j in ls:
    print(j)  # 依次输出 [1,3,5] [3,4,7] [2,5,9]

方式 4:遍历键值对(items())—— 注意输出形式

dt = {'a': [1, 3, 5], 'b': [3, 4, 7], 'c': [2, 5, 9]}
ls = []
for k in dt.items():  # items() 拿“键值对”,格式是元组 (键, 值)
    print(k)  # 输出 ('a', [1,3,5]) 等,不是单纯的值,不符合需求时要注意!

(三)字典增删改

d = {1: 'monkey', 2: 'panda', 3: 'bird', 4: 'fish'}
d[5] = 'sheep'  # 新增键值对,键 5,值 'sheep'
del d[3]  # 删除键 3 对应的键值对
d[3] = 'dog'  # 修改键 3 的值为 'dog'
print(d)  # 输出: {1: 'monkey', 2: 'panda', 4: 'fish', 5: 'sheep', 3: 'dog'}

三、列表(list)—— 有序可变的序列

(一)基本操作

1. 创建列表

# 直接用 [] 存元素,元素类型任意
means = ['Thank', 'You']  
# len() 函数统计列表元素个数,这里有 2 个元素
print(len(means))  # 输出: 2 

2. 排序(sort() 方法)

需求:把 list_a = [5, 4, 1, 2, 3] 排成 [5, 4, 3, 2, 1]

list_a = [5, 4, 1, 2, 3]
# reverse=True 表示“降序排序”,直接修改原列表
list_a.sort(reverse=True)  
print(list_a)  # 输出: [5, 4, 3, 2, 1]

3. 索引与切片

# range(2,10) 生成 2~9 的数字序列,转成列表是 [2,3,4,5,6,7,8,9]
a = list(range(2, 10))  
# 列表索引从 0 开始,a[7] 是第 8 个元素(9),也可用 a[-1] 取最后一个元素
print(a[7])  # 输出: 9 

# 嵌套列表取值,ls[2] 取到 [3,4],再 [1] 取到 4
ls = [1, 2, [3, 4], [5, 6]]  
print(ls[2][1])  # 输出: 4 

(二)列表判断与遍历

s = list(range(10))  # 生成 [0,1,2,3,4,5,6,7,8,9]
# 判断 10 是否在列表里,不在则输出 True
print(10 not in s)  # 输出: True 

# 嵌套列表,len() 统计最外层元素个数,这里是 4 个([[[['a']]], '冰墩墩', 6, '雪容融'] )
list1 = [[[['a']]], ['冰墩墩'], 6, ['雪容融']]  
print(len(list1))  # 输出: 4 

四、元组(tuple)—— 有序不可变的序列

(一)基本操作

1. 索引与切片

tp = (3, 6, 9, 11)
x = tp[2]  # 元组用 [] 取元素,tp[2] 是 9 
print(x)  # 输出: 9 

tup2 = (1, 14, 51, 4, 19, 198, 10)
# 切片 tp[1:-1] 取索引 1 到倒数第 2 位,输出 (14, 51, 4, 19, 198) 
print(tup2[1:-1])  
# 注意:原题目选项 A 描述输出 (14,51,4,19,198,10) 是错误的,实际到倒数第 2 位,少最后一个元素 10 

2. 不可变性

tp = (3, 6, 9, 11)
# 元组创建后不能修改元素,执行 tp[3] = 12 会报错!
# tp[3] = 12  # 报错:TypeError: 'tuple' object does not support item assignment 

(二)元组遍历与统计

tup2 = (1, 14, 51, 4, 19, 198, 10)
# min() 找元组里的最小值,135.0 是最小的
a = (136.0, 135.0, 142.0, 140.0)  
print(min(a))  # 输出: 135.0 

五、字符串(str)—— 字符的序列

(一)切片操作

str1 = '0123456789'
# [1:9:2] 表示从索引 1 开始,到索引 9(不包含),步长 2,取字符 '1' '3' '5' '7'
str2 = str1[1:9:2]  
print(str2)  # 输出: 1357 

(二)字符串拼接与判断

# 字符串用 + 拼接,"20"+"22" 得到 "2022"
print("20" + "22")  # 输出: 2022 

# "2022" in "2022" 判断子串是否存在,结果是 True,但输出的是布尔值,不是 2022 
# print("2022" in "2022")  # 输出: True 

六、循环与条件判断

(一)for 循环 + range()

# range(1,6) 生成 1,2,3,4,5 
for i in range(1, 6):  
    if i % 3 == 0:  # 遇到 3 的倍数(这里是 3),执行 break 跳出循环
        break
    else:
        # 没遇到则打印,end="," 让输出不换行,用逗号连接
        print(i, end=",")  
# 输出: 1,2 

七、总结

  1. 字典:键值对存储,增删改查灵活,遍历要区分 values()/keys()/items()
  2. 列表:有序可变,支持排序、索引、切片,常用 len() 统计元素。
  3. 元组:有序不可变,适合存固定数据,用索引/切片取值。
  4. 字符串:字符序列,切片能灵活取子串,+ 可拼接。
  5. 循环判断for + range() 控制循环,break 跳出循环,结合条件处理逻辑。

多敲代码练习(比如改改参数、换数据类型),就能更熟练啦~ 遇到报错别慌,看提示慢慢调,0 基础也能学会!

2 条评论

  • @ 2025-6-24 20:23:30

    我们来看这段代码的运行结果:

    dt = {'a': 1, 'b': 3, 'c': 5}
    print('a' in dt)        # 判断 'a' 是否是字典 dt 的键
    print(1 in dt)          # 判断 1 是否是字典 dt 的键(不是值)
    print(('a', 1) in dt)   # 判断元组 ('a', 1) 是否是字典 dt 的键
    

    逐句解释:

    1. print('a' in dt)

      • 'a' 是字典 dt 中的一个
      • 所以 'a' in dt 返回 True
    2. print(1 in dt)

      • 1 并不是字典 dt 的键,它是 'a' 对应的值。
      • in 操作符默认检查的是 键(key),而不是值(value)。
      • 所以 1 in dt 返回 False
    3. print(('a', 1) in dt)

      • 这里判断的是一个元组 ('a', 1) 是否为字典 dt 的键。
      • 显然,这个元组并不是字典中的任何一个键。
      • 所以返回 False

    ✅ 最终输出结果:

    True
    False
    False
    

    🔍 小提示:

    如果你想判断某个值是否在字典的 值(value) 中,可以这样写:

    print(1 in dt.values())  # True
    

    如果你想同时遍历键和值,可以用 .items()

    print(('a', 1) in dt.items())  # True
    

    希望这个解释清晰明了!如需进一步讲解字典操作,欢迎继续提问 😊

    • @ 2025-6-24 20:22:06

      🐍 Python 第9课:字典、元组、列表操作与应用


      课程目标

      在本节课中,我们将学习以下内容:

      • 字典:创建、遍历、增删改查等操作
      • 元组:基本操作和切片
      • 列表:索引、切片、排序及删除元素的方法
      • 字符串:基础操作和切片
      • 循环与条件判断:结合实际例子讲解

      一、字典操作

      创建字典

      # 直接通过键值对创建字典
      d1 = {"键1": 100, "键2": 50}
      print(d1)  # 输出:{'键1': 100, '键2': 50}
      
      # 创建空字典
      d2 = {}
      print(d2, type(d2))  # 输出:{} <class 'dict'>
      
      # 使用dict()函数并以关键字参数形式创建字典
      d3 = dict(addr="中国", name="张三", age=15)
      print(d3)  # 输出:{'addr': '中国', 'name': '张三', 'age': 15}
      
      # 使用dict()函数并传入元组列表创建字典
      d4 = dict([("addr", "中国"), ("name", "张三"), ("age", 65)])
      print(d4)  # 输出:{'addr': '中国', 'name': '张三', 'age': 65}
      
      # 使用fromkeys()类方法创建字典
      d5 = dict.fromkeys(["addr", "name", "age", "sex"])
      print(d5)  # 输出:{'addr': None, 'name': None, 'age': None, 'sex': None}
      

      字典遍历

      方法1:直接遍历字典的值

      dt = {'a': [1, 3, 5], 'b': [3, 4, 7], 'c': [2, 5, 9]}
      for i in dt.values():
          print(i)  # 输出:[1, 3, 5] [3, 4, 7] [2, 5, 9]
      

      方法2:遍历字典键获取值

      dt = {'a': [1, 3, 5], 'b': [3, 4, 7], 'c': [2, 5, 9]}
      for i in dt:
          print(dt[i])  # 输出:[1, 3, 5] [3, 4, 7] [2, 5, 9]
      

      方法3:使用dt.keys()获取键再取值

      dt = {'a': [1, 3, 5], 'b': [3, 4, 7], 'c': [2, 5, 9]}
      for k in dt.keys():
          print(dt[k])  # 输出:[1, 3, 5] [3, 4, 7] [2, 5, 9]
      

      方法4:使用dt.items()获取键值对

      dt = {'a': [1, 3, 5], 'b': [3, 4, 7], 'c': [2, 5, 9]}
      for k, v in dt.items():
          print(v)  # 输出:[1, 3, 5] [3, 4, 7] [2, 5, 9]
      

      字典增删改查

      d = {1: 'monkey', 2: 'panda', 3: 'bird', 4: 'fish'}
      d[5] = 'sheep'  # 添加新键值对
      del d[3]  # 删除键为3的项
      d[3] = 'dog'  # 修改或添加键为3的值
      print(d)  # 输出:{1: 'monkey', 2: 'panda', 4: 'fish', 5: 'sheep', 3: 'dog'}
      

      二、元组操作

      元组的基本操作

      tp = (3, 6, 9, 11)
      x = tp[2]  # 正确:x = 9
      # 错误示例:
      # x = tp(2)  # 语法错误
      # tp[3] = 12  # 元组不可变,会报错
      # tp(3) = 12  # 语法错误
      

      元组的切片

      tup2 = (1, 14, 51, 4, 19, 198, 10)
      print(tup2[1:-1])  # 输出:(14, 51, 4, 19, 198)
      print(tup2[3:])  # 输出:(4, 19, 198, 10)
      print(tup2[3:6])  # 输出:(4, 19, 198)
      print(tup2[5])  # 输出:198
      

      三、列表操作

      列表长度计算

      means = ['Thank', 'You']
      print(len(means))  # 输出:2
      

      列表排序

      list_a = [5, 4, 1, 2, 3]
      list_a.sort(reverse=True)  # 降序排列
      print(list_a)  # 输出:[5, 4, 3, 2, 1]
      

      列表索引与切片

      s = list(range(10))
      print(10 not in s)  # 输出:True
      
      # 列表嵌套取值
      ls = [1, 2, [3, 4], [5, 6]]
      print(ls[2][1])  # 输出:4
      

      删除列表元素

      ls1 = ['a', 'A', 'a', 9, 'a']
      ls1.pop(2)  # 删除索引为2的元素
      print(ls1)  # 输出:['a', 'A', 9, 'a']
      

      四、字符串操作

      字符串切片

      str1 = '0123456789'
      str2 = str1[1:9:2]  # 从索引1开始到8,步长为2
      print(str2)  # 输出:1357
      

      字符串拼接

      print("20" + "22")  # 输出:2022
      print(20 + 22)  # 输出:42
      

      五、总结

      • 字典 是一种非常灵活的数据结构,适用于存储键值对信息。我们可以通过多种方式创建字典,并且可以方便地进行增删改查。
      • 元组 是不可变序列,一旦创建就不能修改。它适合用于不需要更改的数据集合。
      • 列表 是可变序列,支持动态增加、删除元素,以及排序等操作。
      • 字符串 支持切片和拼接操作,能够轻松提取子串或组合多个字符串。

      希望这节课能帮助你更好地理解Python中的数据结构及其操作方法。如果有任何问题或需要进一步的帮助,请随时提问!🚀

      • 1