2014-10-20 97 views
0

我正在处理python中的代码。特别是代码是关于scythe密码编码的。我做了一些循环,但我不知道是否有可能在一个循环中减少它。你可以帮我吗? 这里是我的代码:减少代码。减少一些for-loops到一个python

for b in range(1, len(word), 6): 
    word_list2.append(word[b]) 
print(word_list2) 

for c in range(2, len(word), 6): 
    word_list3.append(word[c]) 
print(word_list3) 

for d in range(3, len(word), 6): 
    word_list4.append(word[d]) 
print(word_list4) 

for e in range(4, len(word), 6): 
    word_list5.append(word[e]) 
print(word_list5) 

for f in range(5, len(word), 6): 
    word_list6.append(word[f]) 
print(word_list6) 

这正是代码我想要做什么,但我想知道是否有可能减少在短短一个for循环的一切。

下面是解我做链接回答我收到并致力于IT:

word_list = [] 
for i in range(0,5): 
    word_list1 = word[i::6] 
word_lists = [word[start::6] for start in range(6)] 

回答

10

您不需要使用循环切片哪里会做:

word_list1 = word[0::6] 
word_list2 = word[1::6] 
word_list3 = word[2::6] 
word_list4 = word[3::6] 
word_list5 = word[4::6] 
word_list6 = word[5::6] 

每一种现在是从word开始的第6个元素的新列表对象,从增加第一个索引开始。

但是您不会使用单独的变量;你可以很容易地使这与列表理解列表:

word_lists = [word[start::6] for start in range(6)] 

现在你也有6个单,每一个选择每6个字,通过对5可以解决与word_lists[0]每个列表开始索引0 ,word_lists[1]

+0

你应该更新这个使用append,你的解决方案将覆盖现有的单词列表 – Parker 2014-10-20 15:47:25

+0

@Parker:如果它们不是空的,你可以使用*'list.extend()*。 'word_list1.extend(字[0 :: 6])'。或者使用'+ ='扩充赋值。例如。 'word_list1 + = word [0 :: 6]'。 – 2014-10-20 15:47:57

+0

所以我总是要创建6个不同的列表,对吧? – pp94 2014-10-20 15:48:27