[英]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.