最近在做數(shù)據(jù)分析的練習(xí)時,對一段python代碼中的for循環(huán)不是很理解,代碼如下:print('修正數(shù)據(jù)類型(數(shù)據(jù)清理)')
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轉(zhuǎn)換成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?的數(shù)據(jù)類型
for?engagement_record?in?daily_engagement:
????engagement_record['utc_date']?=?parse_date(engagement_record['utc_date'])
print('\n每日參與學(xué)生數(shù)據(jù):')
print(daily_engagement[0])結(jié)果輸出如下:修正數(shù)據(jù)類型(數(shù)據(jù)清理)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')])每日參與學(xué)生數(shù)據(jù):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循環(huán)的時候只看出了對變量engagement_record作了修改,看不出有對daily_engagement作賦值之類的操作,但卻能夠打印修改后的結(jié)果請大神指教個中原理,謝謝!
關(guān)于python中for循環(huán)的問題?
杰噠噠
2018-02-20 19:50:53