簡體   English   中英

python沒有遍歷數組的其余部分

[英]python not iterating through the rest of array

我互相嵌套了幾個循環,我將發布相關代碼,然后進行解釋:

ANN = ['array','of','fourteen','people']
COUNT = 14

for i in range(COUNT):
    CNT = i
    print CNT
    for i in ANN:
        ANNOTATOR = i
        for row in PRGREADER:
            print row
            if (ANNOTATOR in row[2]) and (WEEK in row[3]):
                if PRGFILE.strip('.csv') not in ANNODAT[CNT][0]:
                    ANNODAT[CNT][0].append(PRGFILE.strip('.csv'))

該代碼段應該讀取一個csv文件(讀入PRGREADER),檢查並查看ANN的當前值和星期編號是否在該行上。 如果它們是,它將采用文件名並將其存儲在數組中。

我將其范圍縮小到實現通過COUNT進行迭代,通過ANN進行迭代,但是在此之后,它僅在通過ANN的第一次迭代中執行其余代碼。 為什么在ANN的第一次迭代后不執行其余的嵌套代碼?

編輯添加PRGREADER的創建

for filename in os.listdir('progress/'):
    if filename.endswith('.csv'):
        PRGFILES.append(filename)


for i in PRGFILES:
    PRGFILE = i
    with open('./progress/' + PRGFILE,'rb') as PROGRESS:
        PROGRESS = [element.upper() for element in PROGRESS]
        PRGREADER = csv.reader(PROGRESS, delimiter = ',', quotechar = '|')

您的問題與多次迭代同一個csv.reader對象有關。 reader對象是一個迭代器,因此對它進行一次迭代之后,嘗試進行更多的迭代就不會再有任何結果,因為它已經被耗盡。 您要么需要在整個循環中每次都重新創建您的閱讀器,要么重新組織代碼,以免您需要對其進行多次迭代(例如,使其成為外部循環而不是內部循環)。

您的代碼還有許多其他問題,您可能還需要更改。 例如,您for i in something反復使用for i in something ,然后立即將其他名稱綁定到i 您應該簡單地將其他名稱直接放入循環中(例如, for CNT in range(...) )。 我還建議遵循更好的變量名稱樣式,例如對於普通變量使用lower_case_with_underscores ,並為常量保留ALL_CAPITALS (對於類的名稱, CapitalizedNames也是常規的,但是您似乎沒有這些名稱)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM