🧠 Python 学习笔记:列表统计函数练习整理(入门必练)
熊猫老师 发布于 阅读:17
在学习 Python 的过程中,列表(list)是最常用的数据结构之一。本篇记录一些基础但非常重要的练习,包括:
- 求和
- 最大值 / 最小值
- 平均值
- 综合统计(max / min / avg)
- 条件计数
- 区间筛选
- 查找元素下标
这些练习的核心思想只有一个:👉 遍历列表(for 循环)
📌 一、求和(sum)
def sum_nums(nums):
"""
计算列表中所有元素的总和
"""
total = 0
for i in nums:
total = total + i
return total
print(sum_nums([23, 23, 23, 45, 23]))
💡 思路
- 用一个变量
total存总和 - 遍历列表,不断累加
📌 二、求最大值(max)
def max_nums(nums):
"""
返回列表中的最大值
"""
max_num = nums[0] # 假设第一个元素最大
for i in nums:
if i > max_num:
max_num = i
return max_num
print(max_nums([23, 23, 423, 32]))
💡 思路
- 先设第一个元素为最大值
- 遍历并不断更新
📌 三、求最小值(min)
def min_nums(nums):
"""
返回列表中的最小值
"""
min_num = nums[0]
for i in nums:
if i < min_num:
min_num = i
return min_num
print(min_nums([27, 29, 23, 43]))
📌 四、求平均值(avg)
def avg(nums):
"""
计算列表平均值
"""
total = 0
for i in nums:
total = total + i
average = total / len(nums)
return average
print(avg([27, 29, 23, 43]))
💡 公式
平均值 = 总和 / 个数
📌 五、统计 max / min / avg(基础写法)
def sats(nums):
"""
同时返回最大值、最小值、平均值(多次遍历)
"""
# 最大值
max_num = nums[0]
for i in nums:
if i > max_num:
max_num = i
# 最小值
min_num = nums[0]
for i in nums:
if i < min_num:
min_num = i
# 平均值
total = 0
for i in nums:
total = total + i
avg = total / len(nums)
return max_num, min_num, avg
print(sats([23, 54, 28, 23]))
📌 六、统计 max / min / avg(优化写法 ⭐)
def stats(nums):
"""
同时返回最大值、最小值、平均值(一次遍历完成)
"""
max_num = nums[0]
min_num = nums[0]
total = 0
for i in nums:
if i > max_num:
max_num = i
if i < min_num:
min_num = i
total = total + i
avg = total / len(nums)
return max_num, min_num, avg
print(stats([27, 29, 23, 43]))
🚀 优点
- 只遍历一次列表
- 更高效(面试常考点)
📌 七、统计大于某个值的个数
def count_greater(nums, x):
"""
统计大于 x 的元素个数
"""
count = 0
for i in nums:
if i > x:
count = count + 1
return count
print(count_greater([23, 54, 23], 10))
📌 八、统计区间内元素个数
def count_between(nums, a, b):
"""
统计区间 [a, b] 内的元素个数(包含边界)
"""
count = 0
for i in nums:
if a <= i <= b:
count = count + 1
return count
print(count_between([23, 25, 43, 64], 23, 40))
📌 九、找出区间内的元素
def find_between(nums, a, b):
"""
找出区间 (a, b) 内的所有元素(不包含边界)
"""
result = []
for i in nums:
if a < i < b:
result.append(i)
return result
print(find_between([23, 24, 32, 35], 22, 30))
💡 区别
| 函数 | 返回 |
|---|---|
| count_between | 个数 |
| find_between | 元素列表 |
📌 十、查找最大值下标
def find_max_idx(nums):
"""
返回最大值所在的索引(下标)
"""
max_val = nums[0]
max_idx = 0
for i in range(len(nums)):
if nums[i] > max_val:
max_val = nums[i]
max_idx = i
return max_idx
print(find_max_idx([23, 25, 534]))
📌 十一、查找最小值下标
def find_min_idx(nums):
"""
返回最小值所在的索引(下标)
"""
min_val = nums[0]
min_idx = 0
for i in range(1, len(nums)):
if nums[i] < min_val:
min_val = nums[i]
min_idx = i
return min_idx
print(find_min_idx([23, 25, 534]))
📦 完整代码(可直接运行)
def sum_nums(nums):
total = 0
for i in nums:
total += i
return total
def max_nums(nums):
max_num = nums[0]
for i in nums:
if i > max_num:
max_num = i
return max_num
def min_nums(nums):
min_num = nums[0]
for i in nums:
if i < min_num:
min_num = i
return min_num
def avg(nums):
total = 0
for i in nums:
total += i
return total / len(nums)
def stats(nums):
max_num = nums[0]
min_num = nums[0]
total = 0
for i in nums:
if i > max_num:
max_num = i
if i < min_num:
min_num = i
total += i
return max_num, min_num, total / len(nums)
def count_greater(nums, x):
count = 0
for i in nums:
if i > x:
count += 1
return count
def count_between(nums, a, b):
count = 0
for i in nums:
if a <= i <= b:
count += 1
return count
def find_between(nums, a, b):
result = []
for i in nums:
if a < i < b:
result.append(i)
return result
def find_max_idx(nums):
max_val = nums[0]
max_idx = 0
for i in range(len(nums)):
if nums[i] > max_val:
max_val = nums[i]
max_idx = i
return max_idx
def find_min_idx(nums):
min_val = nums[0]
min_idx = 0
for i in range(1, len(nums)):
if nums[i] < min_val:
min_val = nums[i]
min_idx = i
return min_idx
🧾 学习总结
通过这些练习,我掌握了:
- for 循环遍历列表
- 累加器思想(total / count)
- 最大最小值更新逻辑
- 函数封装
- 返回多个值(tuple)
- append() 使用
- 下标遍历
👉 这些都是后续学习算法和数据结构的基础。