为了账号安全,请及时绑定邮箱和手机立即绑定

关于python中for循环的问题?

关于python中for循环的问题?

杰哒哒 2018-02-20 19:50:53
最近在做数据分析的练习时,对一段python代码中的for循环不是很理解,代码如下:print('修正数据类型(数据清理)') import unicodecsv from datetime import datetime as dt def read_csv(filename):     with open(filename, 'rb') as f:           reader = unicodecsv.DictReader(f)         return list(reader)      def parse_date(date):     #将字符串的date转换成python的日期时间对象     if date == '':        #检查日期是否为空字符串         return None     else:         return dt.strptime(date, '%Y-%m-%d') #将字符串解析成日期 daily_engagement = read_csv('daily-engagement.csv') print(daily_engagement[0]) # 清理 engagement 的数据类型 for engagement_record in daily_engagement:     engagement_record['utc_date'] = parse_date(engagement_record['utc_date']) print('\n每日参与学生数据:') print(daily_engagement[0])结果输出如下:修正数据类型(数据清理)OrderedDict([('acct', '0'), ('utc_date', '2015-01-09'), ('num_courses_visited', '1.0'), ('total_minutes_visited', '11.6793745'), ('lessons_completed', '0.0'), ('projects_completed', '0.0')])每日参与学生数据:OrderedDict([('acct', '0'), ('utc_date', datetime.datetime(2015, 1, 9, 0, 0)), ('num_courses_visited', '1.0'), ('total_minutes_visited', '11.6793745'), ('lessons_completed', '0.0'), ('projects_completed', '0.0')])在读取了daily-engagement.csv文件后,打印变量daily_engagement[0]时,('utc_date', '2015-01-09')中的日期还只是字符串我的问题是,在对变量daily_engagement进行遍历后,为什么在打印同样的daily_engagement时,里面的utc_date就变成了datetime.datetime(2015, 1, 9, 0, 0)?我在看这个for循环的时候只看出了对变量engagement_record作了修改,看不出有对daily_engagement作赋值之类的操作,但却能够打印修改后的结果请大神指教个中原理,谢谢!
查看完整描述

1 回答

已采纳
?
慕函数9285021

TA贡献27条经验 获得超6个赞

可以理解为 engagement_record 是对 daily_engagement 的引用,所以会直接改变原始对象

查看完整回答
反对 回复 2018-02-22
  • 1 回答
  • 0 关注
  • 1199 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信