2017-09-06 18 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 –