列表与循环语句基础
一、为什么需要列表?
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变化初始-01950 + 95 = 9528895 + 88 = 183372183 + 72 = 2554100255 + 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-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次“欢迎”
- 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元素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
代码
- 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)
复制代码 分析过程
- 第一个循环后,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
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |