Python学习笔记——(二)循环结构,列表部分(切片,增删改查)

1. 循环的else子句 【重点】
  • 作用:当循环正常结束(未被break中断)时执行
  • 典型场景:检测循环是否完整执行(如搜索元素未找到时触发)
# 示例:查找列表中是否存在偶数
nums = [1, 3, 5, 7]
for num in nums:
    if num % 2 == 0:
        print("找到偶数")
        break
else:
    print("未找到偶数")  # 会执行
2. 循环嵌套
  • 规则:外层循环执行一次,内层循环执行全部
  • 示例:打印九九乘法表
for i in range(1, 10):
    for j in range(1, i+1):
        print(f"{j}x{i}={i*j}", end="\t")
    print()  # 换行

⚠️ 注意:嵌套层次不宜过多(通常不超过3层)

3. for循环与range函数
  • range的三种形式
    形式 示例 说明
    range(stop) range(5) 生成0,1,2,3,4
    range(start, stop) range(2, 5) 生成2,3,4
    range(start, stop, step) range(1, 10, 2) 生成1,3,5,7,9(步长2)
# 示例:生成逆序数字
for i in range(10, 0, -1):
    print(i)  # 输出10,9,8,...,1

列表操作详解

1. 列表基础
  • 定义列表 = [元素1, 元素2, ...](元素类型可不同)
  • 遍历
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
    print(fruit)
2. 列表切片 【核心操作】
操作 示例 结果
全列表 nums[:] 复制整个列表
指定区间 nums[1:4] 索引1到3的元素
从头开始 nums[:3] 索引0到2的元素
到末尾结束 nums[2:] 索引2到末尾的元素
负数索引 nums[-3:-1] 倒数第3到倒数第2个
带步长 nums[::2] 每隔一个元素取一次
逆序 nums[::-1] 反转列表
nums = [0, 1, 2, 3, 4, 5]
print(nums[1:4])   # [1, 2, 3]
print(nums[::2])   # [0, 2, 4]
print(nums[::-1])  # [5, 4, 3, 2, 1, 0]
3. 增删改查操作
增加元素
方法 示例 说明
append(元素) heros.append("雷神") 末尾添加单个元素
extend(可迭代对象) heros.extend(["美队", "黑寡妇"]) 合并另一个列表/字符串等(原地修改)
切片赋值 heros[len(heros):] = ["鹰眼"] 等效于append
insert(位置, 元素) heros.insert(1, "蜘蛛侠") 在指定索引前插入元素
heros = ["钢铁侠", "绿巨人"]
heros.append("雷神")          # ["钢铁侠", "绿巨人", "雷神"]
heros.extend(["美队", "黑寡妇"]) # 合并两个列表
heros[3:] = ["鹰眼"]          # 替换索引3及之后的元素
heros.insert(1, "蜘蛛侠")     # 索引1前插入
删除元素
方法 示例 说明
remove(元素) heros.remove("雷神") 删除首个匹配元素(无匹配时报错)
pop([索引]) heros.pop(1) 删除并返回指定位置元素(默认最后一个)
clear() heros.clear() 清空列表
heros = ["钢铁侠", "蜘蛛侠", "绿巨人", "雷神"]
heros.remove("蜘蛛侠")  # 删除第一个"蜘蛛侠"
last = heros.pop()     # 删除"雷神"并返回
heros.pop(0)           # 删除索引0元素("钢铁侠")
修改元素
  • 直接赋值:
heros[1] = "黑寡妇"  # 修改索引1的元素  
  • 批量替换(切片赋值):
heros[2:] = ["美队", "鹰眼"]  # 替换索引2及之后的元素  
查找与统计
方法 示例 说明
count(元素) nums.count(3) 统计元素出现次数
index(元素, start, end) nums.index(3, 2, 5) 返回元素首次出现的索引(可指定范围)
nums = [1, 2, 3, 2, 3, 4]
print(nums.count(3))        # 2
print(nums.index(3, 3, 5))  # 4(在索引3~5之间查找)
4. 排序与反转
  • 升序排序(原地修改):
nums = [3, 1, 4, 2]
nums.sort()              # [1, 2, 3, 4]
nums.sort(reverse=True)  # 降序排序 [4, 3, 2, 1]
  • 反转列表顺序
nums.reverse()           # [2, 3, 1, 4] → [4, 1, 3, 2]
5. 列表复制
  • 浅拷贝(复制值,不复制子对象):
nums = [1, [2, 3], 4]
nums_copy = nums.copy()    # 或 nums_copy = nums[:]
nums_copy[1][0] = 99       # 原列表nums的嵌套列表也会被修改!

综合示例

# 列表操作综合应用
numbers = [5, 2, 8, 3]
numbers.append(1)              # [5,2,8,3,1]
numbers.extend([4, 7])         # [5,2,8,3,1,4,7]
numbers.insert(2, 6)           # [5,2,6,8,3,1,4,7]
numbers.pop()                  # 删除7 → [5,2,6,8,3,1,4]
numbers.sort()                 # [1,2,3,4,5,6,8]
sub_list = numbers[2:5]        # [3,4,5]

重点总结

  1. else子句:仅当循环未被break时执行,适合处理“未找到”逻辑
  2. 切片操作:灵活提取子列表,支持负数索引和步长
  3. 增删方法
    • append/extend区别:前者加单个元素,后者合并可迭代对象
    • pop不带参数时删除最后一个元素
  4. 浅拷贝陷阱:嵌套列表的修改会影响原列表

你可能感兴趣的:(python,学习,笔记)