Python 平时遗漏点整理-enumerate()

本文详细介绍了Python内置函数enumerate()的使用方法,包括如何通过enumerate()获取可迭代对象的索引和值,以及如何利用它来统计文件的行数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

enumerate()说明

  • enumerate()是python的内置函数
  • enumerate在字典上是枚举、列举的意思
    对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值,enumerate多用于在for循环中得到计数
    这里写图片描述

enumerate还可以接收第二个参数,用于指定索引起始值,如:

list1 = ["这", "是", "一个", "测试"]
for index, item in enumerate(list1, 1):
    print index, item
123 一个
4 测试

如果要统计文件的行数,可以这样写:

count = len(open(filepath, ‘r’).readlines())
1
1
这种方法简单,但是可能比较慢,当文件比较大时甚至不能工作。

可以利用enumerate():

count = -1
for index, line in enumerate(open(filepath,’r’)):
count += 1
1
2
3
1
2
3

import json import os import re from collections import defaultdict # 数据存储文件路径 DATA_FILE = "students.json" # 成绩权重配置 WEIGHTS = {'平时': 0.3, '期中': 0.3, '期末': 0.4} class StudentManager: def __init__(self): self.students = self.load_data() def load_data(self): """加载学生数据""" if os.path.exists(DATA_FILE): with open(DATA_FILE, 'r', encoding='utf-8') as f: return json.load(f) return {} def save_data(self): """保存数据到文件""" with open(DATA_FILE, 'w', encoding='utf-8') as f: json.dump(self.students, f, ensure_ascii=False, indent=4) def add_student(self): """添加学生信息""" student_id = input("请输入学号(格式A001):") if not re.match(r'^[A-Z]\d{3}$', student_id): print("学号格式错误!") return if student_id in self.students: print("该学号已存在!") return self.students[student_id] = { 'name': input("姓名:"), 'class': input("班级:"), 'scores': {} } print("学生添加成功!") def delete_student(self): """删除学生信息""" student_id = input("请输入要删除的学号:") if student_id in self.students: del self.students[student_id] print("删除成功!") else: print("学生不存在!") def modify_student(self): """修改学生信息""" student_id = input("请输入学号:") if student_id not in self.students: print("学生不存在!") return student = self.students[student_id] student['name'] = input(f"新姓名(原:{student['name']}):") or student['name'] student['class'] = input(f"新班级(原:{student['class']}):") or student['class'] print("修改成功!") def query_student(self): """查询学生信息""" key = input("查询条件(学号/姓名/班级):") results = [] for sid, info in self.students.items(): if key in [sid, info['name'], info['class']]: results.append((sid, info))
最新发布
03-30
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值