2017-09-06 38 views
1

還有一個新的仍然使用python和StackOverflow。我正在嘗試將一個文本文件與單詞列表進行比較,然後對其進行迭代,並將每個第一,第二和第三個單詞排序爲3個不同的列表。我的問題是,我不能讓它運行多次。我認爲我的增量器可能不正確。排序一列文本的增量和枚舉

shakey2 = open('/path/to/file/shakey2.txt', 'r') 

col1 = [] 
col2 = [] 
col3 = [] 
inc = 0 
ent1, ent2, ent3 = range(3) #0, 1, 2 
for en, line in enumerate(shakey2): 
    l = line.strip() 
    if ent1 + inc == en: 
     col1.append(l) 
    elif ent2 + inc == en: 
     col2.append(l) 
    elif ent3 + inc == en: 
     col3.append(l) 

    inc += 3 
    continue  

shakey2.close() 
print(col1, col2, col3) 

這裏是我使用的文本文件中的一個片段:

artless 
base-court 
apple-john 
bawdy 
bat-fowling 
baggage 
beslubbering 
beef-witted 
barnacle 
bootless 
beetle-headed 
bladder 
churlish 
boil-brained 
boar-pig 
cockered 
clapper-clawed 
bugbear 

輸出:

(['artless'], ['base-court'], ['apple-john']) 

所需的輸出:

(['artless', 'bawdy', 'beslubbering'], ['base-court', 'bat-fowling', 'beef-witted'], ['apple-john', 'baggage', 'barnacle']) 
+0

顯示** **所需輸出 – RomanPerekhrest

+1

你需要採取的MOD,否則那些東西站的總和介於0和3之間。你甚至不需要總結任何東西,我不這麼認爲。無論如何,你在'繼續'之後永遠不會到達線路。 –

回答

3

與國防部,你可以做它很容易:

shakey2 = open('/path/to/file/shakey2.txt', 'r') 

cols = [[] for _ in range(3)] 
for en, line in enumerate(shakey2): 
    cols[en % 3].append(line.strip()) 

shakey2.close() 
print(cols) 

如果你想解開這個名單到您最初的三個變量:

col1, col2, col3 = cols 
+0

謝謝。那樣做了。我只是在學習如何使用枚舉。此外,列表實施列表並不是我想到的。 –

+0

你應該解釋它,所以他知道它在做什麼,所以其他剛剛接觸python的人都明白 –

+0

https://docs.python.org/3/library/functions.html#enumerate –