csq17

导航

csq-蓝桥杯python-基础语法2-列表与循环语句基础

列表与循环语句基础

一、为什么需要列表?

1. 问题场景

用变量存储单个数据(如name = "Alice"),但存储班级所有同学名字需声明几十个变量,效率极低。

2. 列表的定义

列表(List)是Python中最常用的动态数据结构,可容纳多个有序元素,支持任意类型数据(数字、字符串等)。

  • 元素间用逗号分隔;
  • 整个列表用方括号[]包围。

3. 列表的创建

## 存储字符串列表
students = ["Alice", "Bob", "Charlie"]  
## 存储数字列表
scores = [96, 88, 72, 100]  
## 空列表(后续可动态添加元素)
empty_list = []  

二、列表的基本操作

1. 访问列表元素

  • 索引(Index):列表元素的位置编号,从0开始(第一个元素索引为0,第二个为1,依此类推)。
  • 访问方式:通过列表名[索引]获取元素。
示例
students = ["Alice", "Bob", "Charlie"]
print(students[0])  # 输出:Alice(第一个元素)
print(students[2])  # 输出:Charlie(第三个元素)
注意事项

访问不存在的索引会触发IndexError错误(如students[3]超出列表长度)。

2. 向列表添加元素

  • append()方法:在列表末尾添加新元素(动态修改列表)。
示例
names = []
names.append("Alice")   # 添加第一个元素
names.append("Bob")     # 添加第二个元素
names.append("Charlie") # 添加第三个元素
print(names)  # 输出:['Alice', 'Bob', 'Charlie']

三、列表的输入(算法竞赛常用)

1. 需求

读取一行以空格分隔的数字,并存入列表(如输入10 20 30 40 50,输出[10,20,30,40,50])。

2. 标准模板(需记忆)

## 输入:10 20 30 40 50
numbers = list(map(int, input().split()))  # 按空格分割→转换为整数→转为列表
print(numbers)  # 输出:[10, 20, 30, 40, 50]

3. 说明

  • input().split():按空格分割输入的字符串,返回列表(如"10 20".split()["10","20"]);
  • map(int, ...):将列表中的元素转换为整数;
  • list(...):将map对象转为列表。

四、遍历列表(for循环)

1. 问题场景

需依次处理列表中所有元素(如打印所有同学名字),手动写多行print效率低。

2. for循环的基本语法

for 变量 in 列表:
    # 对变量执行操作(注意缩进!)
示例:打印所有同学名字
students = ["Alice", "Bob", "Charlie"]
for student in students:
    print("Hello,", student)

输出

Hello, Alice
Hello, Bob
Hello, Charlie

3. for循环的应用:计算总分

适合对列表中的数字进行累加、累乘等操作。

示例:计算考试成绩总分
scores = [95, 88, 72, 100]
total_score = 0
for score in scores:
    total_score += score  # 等价于 total_score = total_score + score
print("总分是:", total_score)  # 输出:总分是:355
执行过程
循环次数 score值 total_score变化
初始 - 0
1 95 0 + 95 = 95
2 88 95 + 88 = 183
3 72 183 + 72 = 255
4 100 255 + 100 = 355

五、同时获取索引和元素:enumerate()

1. 需求场景

遍历列表时,需同时获取元素本身索引(如打印学生名次)。

2. enumerate()函数

自动返回元素的索引,语法:for 索引, 元素 in enumerate(列表)

示例:打印学生名次
students = ["Alice", "Bob", "Charlie", "David"]
for index, name in enumerate(students):
    print("第", index, "名是", name)

输出

第 0 名是 Alice
第 1 名是 Bob
第 2 名是 Charlie
第 3 名是 David

六、range()函数(生成整数序列)

1. 作用

生成整数序列,常与for循环结合,适用于执行固定次数操作(不依赖现有列表)。

2. 用法

语法 说明 示例
range(n) 生成0, 1, ..., n-1 range(5)0,1,2,3,4
range(start, stop) 生成start, start+1, ..., stop-1 range(1,5)1,2,3,4
range(start, stop, step) 生成start, start+step, ...(步长step range(0,10,2)0,2,4,6,8
示例:打印5次“欢迎”
for i in range(5):  # 生成0-4的整数序列
    print("欢迎,您是第", i, "位用户")

3. range()的步长(step)

  • 步长:控制序列中数字的间隔(正数表示递增,负数表示递减)。
示例1:打印偶数(步长=2)
for i in range(0, 10, 2):  # 从0开始,到10前结束,步长2
    print(i)  # 输出:0, 2, 4, 6, 8
示例2:倒序计数(步长=-1)
for i in range(5, 0, -1):  # 从5开始,到0前结束,步长-1
    print(i)  # 输出:5, 4, 3, 2, 1

4. for-range循环的应用

循环次数确定(不依赖现有列表)时,for-range是最佳选择。

示例:计算1到10的整数和
total = 0
for i in range(1, 11):  # 生成1-10的整数序列
    total += i
print("1到10的总和是:", total)  # 输出:1到10的总和是:55
提示

不需要循环变量(仅重复动作),可用下划线_代替变量名(如for _ in range(10): print("Hello"))。

七、读程序写结果练习

练习1

代码
data = [1, 2, 3, 4, 5]
result = 0
for i, value in enumerate(data):
    if i % 2 == 0:  # 索引为偶数时,加value
        result += value
    else:           # 索引为奇数时,减value
        result -= value
print(result)
分析过程
索引i 元素value i%2结果 操作 result变化
0 1 0(偶) result += 1 0 + 1 = 1
1 2 1(奇) result -= 2 1 - 2 = -1
2 3 0(偶) result += 3 -1 + 3 = 2
3 4 1(奇) result -= 4 2 - 4 = -2
4 5 0(偶) result += 5 -2 + 5 = 3
答案

3

练习2

代码
my_list = []
for i in range(1, 6):  # 生成1-5的整数序列
    my_list.append(i * i)  # 添加平方数(1,4,9,16,25)
total = 0
for num in my_list:
    if num > 10:  # 累加大于10的元素
        total += num
print(total)
分析过程
  1. 第一个循环后,my_list = [1, 4, 9, 16, 25]
  2. 第二个循环遍历my_list
    • num=1:不满足>10,不累加;
    • num=4:不满足>10,不累加;
    • num=9:不满足>10,不累加;
    • num=16:满足>10total=0+16=16
    • num=25:满足>10total=16+25=41
答案

41


posted on 2025-12-15 22:46  陈诗棋  阅读(0)  评论(0)    收藏  举报