在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Python/ 關(guān)于python中for循環(huán)的問題?

關(guān)于python中for循環(huán)的問題?

最近在做數(shù)據(jù)分析的練習(xí)時(shí),對一段 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的日期時(shí)間對象
    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] 時(shí),('utc_date', '2015-01-09') 中的日期還只是字符串

我的問題是,在對變量 daily_engagement 進(jìn)行遍歷后,為什么在打印同樣的 daily_engagement 時(shí),里面的utc_date 就變成了 datetime.datetime(2015, 1, 9, 0, 0)?

我在看這個(gè) for 循環(huán)的時(shí)候只看出了對變量 engagement_record 作了修改,看不出有對 daily_engagement
作賦值之類的操作,但卻能夠打印修改后的結(jié)果

請大神指教個(gè)中原理,謝謝!

回答
編輯回答
哎呦喂

daily_engagement是一個(gè) list,保留了對每一個(gè) engagement_record 的引用。

前后兩次 engagement_record[0] 取得都是同一個(gè)engagement_record,是這個(gè)engagement_record中的一個(gè)字段被改變了。

2017年3月23日 04:20
編輯回答
未命名

for i in [v1,v2,v3]:
i記錄的是變量 v* 的地址,
如果變量是字符串, 修改i, v* 沒有變化,
如果變量是列表, 那么 v1[0] === i[0]
他們共用一個(gè)地址,

#!/usr/bin/python3

a = [[1,2],[1,2],[1,2],[1,2],[1,2]]

for i in a:
    i[0] = 5

print(a)
2018年5月30日 05:24