找回密码
 立即注册
首页 业界区 业界 csq-蓝桥杯python-基础语法2-列表与循环语句基础 ...

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

粒浊 5 小时前
列表与循环语句基础

一、为什么需要列表?

1. 问题场景

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

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

  • 元素间用逗号分隔;
  • 整个列表用方括号[]包围。
3. 列表的创建
  1. ## 存储字符串列表
  2. students = ["Alice", "Bob", "Charlie"]  
  3. ## 存储数字列表
  4. scores = [96, 88, 72, 100]  
  5. ## 空列表(后续可动态添加元素)
  6. empty_list = []  
复制代码
二、列表的基本操作

1. 访问列表元素


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

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


  • append()方法:在列表末尾添加新元素(动态修改列表)。
示例
  1. names = []
  2. names.append("Alice")   # 添加第一个元素
  3. names.append("Bob")     # 添加第二个元素
  4. names.append("Charlie") # 添加第三个元素
  5. print(names)  # 输出:['Alice', 'Bob', 'Charlie']
复制代码
三、列表的输入(算法竞赛常用)

1. 需求

读取一行以空格分隔的数字,并存入列表(如输入10 20 30 40 50,输出[10,20,30,40,50])。
2. 标准模板(需记忆)
  1. ## 输入:10 20 30 40 50
  2. numbers = list(map(int, input().split()))  # 按空格分割→转换为整数→转为列表
  3. print(numbers)  # 输出:[10, 20, 30, 40, 50]
复制代码
3. 说明


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

1. 问题场景

需依次处理列表中所有元素(如打印所有同学名字),手动写多行print效率低。
2. for循环的基本语法
  1. for 变量 in 列表:
  2.     # 对变量执行操作(注意缩进!)
复制代码
示例:打印所有同学名字
  1. students = ["Alice", "Bob", "Charlie"]
  2. for student in students:
  3.     print("Hello,", student)
复制代码
输出
  1. Hello, Alice
  2. Hello, Bob
  3. Hello, Charlie
复制代码
3. for循环的应用:计算总分

适合对列表中的数字进行累加、累乘等操作。
示例:计算考试成绩总分
  1. scores = [95, 88, 72, 100]
  2. total_score = 0
  3. for score in scores:
  4.     total_score += score  # 等价于 total_score = total_score + score
  5. print("总分是:", total_score)  # 输出:总分是:355
复制代码
执行过程

循环次数score值total_score变化初始-01950 + 95 = 9528895 + 88 = 183372183 + 72 = 2554100255 + 100 = 355五、同时获取索引和元素:enumerate()

1. 需求场景

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

自动返回元素的索引,语法:for 索引, 元素 in enumerate(列表)。
示例:打印学生名次
  1. students = ["Alice", "Bob", "Charlie", "David"]
  2. for index, name in enumerate(students):
  3.     print("第", index, "名是", name)
复制代码
输出
  1. 第 0 名是 Alice
  2. 第 1 名是 Bob
  3. 第 2 名是 Charlie
  4. 第 3 名是 David
复制代码
六、range()函数(生成整数序列)

1. 作用

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

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


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

循环次数确定(不依赖现有列表)时,for-range是最佳选择。
示例:计算1到10的整数和
  1. total = 0
  2. for i in range(1, 11):  # 生成1-10的整数序列
  3.     total += i
  4. print("1到10的总和是:", total)  # 输出:1到10的总和是:55
复制代码
提示

不需要循环变量(仅重复动作),可用下划线_代替变量名(如for _ in range(10): print("Hello"))。
七、读程序写结果练习

练习1

代码
  1. data = [1, 2, 3, 4, 5]
  2. result = 0
  3. for i, value in enumerate(data):
  4.     if i % 2 == 0:  # 索引为偶数时,加value
  5.         result += value
  6.     else:           # 索引为奇数时,减value
  7.         result -= value
  8. print(result)
复制代码
分析过程

索引i元素valuei%2结果操作result变化010(偶)result += 10 + 1 = 1121(奇)result -= 21 - 2 = -1230(偶)result += 3-1 + 3 = 2341(奇)result -= 42 - 4 = -2450(偶)result += 5-2 + 5 = 3答案

3
练习2

代码
  1. my_list = []
  2. for i in range(1, 6):  # 生成1-5的整数序列
  3.     my_list.append(i * i)  # 添加平方数(1,4,9,16,25)
  4. total = 0
  5. for num in my_list:
  6.     if num > 10:  # 累加大于10的元素
  7.         total += num
  8. print(total)
复制代码
分析过程


  • 第一个循环后,my_list = [1, 4, 9, 16, 25];
  • 第二个循环遍历my_list:

    • num=1:不满足>10,不累加;
    • num=4:不满足>10,不累加;
    • num=9:不满足>10,不累加;
    • num=16:满足>10,total=0+16=16;
    • num=25:满足>10,total=16+25=41。

答案

41

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册