Python 案例:统计脚后跟传球成功次数
下面我用一个完整的案例来演示如何统计足球比赛中"脚后跟传球"的成功次数。

场景说明
- 每次传球有:传球方式(脚后跟/普通)、结果(成功/失败)
- 我们需要统计脚后跟传球且成功的次数
基础字典/列表统计
# 模拟比赛传球数据
passes = [
{"type": "脚后跟", "result": "成功"},
{"type": "普通", "result": "成功"},
{"type": "脚后跟", "result": "失败"},
{"type": "脚后跟", "result": "成功"},
{"type": "普通", "result": "失败"},
{"type": "脚后跟", "result": "成功"},
]
# 统计脚后跟传球成功次数
count = 0
for p in passes:
if p["type"] == "脚后跟" and p["result"] == "成功":
count += 1
print(f"脚后跟传球成功次数:{count}") # 输出:3
使用 sum() 一行流
count = sum(1 for p in passes
if p["type"] == "脚后跟" and p["result"] == "成功")
print(count) # 3
使用 collections.Counter(推荐)
适合同时统计多种传球方式的成功/失败情况:
from collections import Counter
# 只统计"成功"的传球,按类型分组
counter = Counter(
p["type"] for p in passes if p["result"] == "成功"
)
print(counter) # Counter({'脚后跟': 3, '普通': 1})
print("脚后跟成功次数:", counter["脚后跟"]) # 3
用 Pandas 处理真实数据(实战推荐)
真实比赛数据通常有几百上千条,用 Pandas 更方便:
import pandas as pd
df = pd.DataFrame(passes)
print(df)
# 筛选:脚后跟 + 成功
heel_success = df[(df["type"] == "脚后跟") & (df["result"] == "成功")]
print("脚后跟传球成功次数:", len(heel_success)) # 3
# 更全面:统计每种传球方式的成功/失败分布
print(df.groupby(["type", "result"]).size())
输出:
type result
普通 失败 1
成功 1
脚后跟 失败 1
成功 3
封装成函数(工程化)
def count_heel_success(passes):
"""统计脚后跟传球成功次数"""
return sum(
1 for p in passes
if p.get("type") == "脚后跟" and p.get("result") == "成功"
)
print(count_heel_success(passes)) # 3
关键点小结
| 方法 | 适用场景 |
|---|---|
| for 循环 | 教学入门、逻辑清晰 |
sum() + 生成器 |
一行简洁、避免中间变量 |
| Counter | 需要同时统计多个类别 |
| Pandas | 数据量大、需要分组分析 |
如果你有真实的比赛数据(CSV / Excel / API 格式),告诉我字段名,我可以帮你改成直接读取文件统计的版本 👍