如何将其转换为for循环?

时间:2016-11-18 06:49:55

标签: python python-2.7

所以基本上我试图取代它:

board = {
        0:[0, 1, 2, 9, 10, 11, 18, 19, 20],
        1:[3, 4, 5, 12, 13, 14, 21, 22, 23],
        2:[6, 7, 8, 15, 16, 17, 24, 25, 26]}

使用for循环自动创建它。对不起,如果这看起来很明显,但我有点像菜鸟,我在这方面遇到了很多麻烦。

3 个答案:

答案 0 :(得分:2)

看起来你正在生成前27个整数(从0开始),然后对它们进行分组。让我们这样写。

def group_by_threes(n=27, group_count=3):
    # The end result will be a dict of lists. The number of lists
    # is determined by `group_count`.
    result = {}
    for x in range(group_count):
        result[x] = []
    # Since we're using subgroups of 3, we iterate by threes:
    for x in range(n // 3):
        base = 3 * x
        result[x % 3] += [base, base + 1, base + 2]
    # And give back the answer!
    return result

通过使组的大小(在这种情况下为三个)成为一个参数,可以使这个代码更好,但我将这作为练习留给读者。 ;)

这种方法的优势在于它比仅仅编写一次性方法更加模块化和适应性更强,可以生成您正在寻找的确切列表。毕竟,如果您只想生成您展示的那个列表,那么硬编码可能会更好!

答案 1 :(得分:0)

def create_list(x):
    a = [x,x+1,x+2,x+9,x+9+1,x+9+2,x+18,x+18+1,x+18+2]
    return a
output = {}
for i in range(3):
    output[i*3] = create_list(i*3)

print output

请尝试此操作以获得所需的输出

答案 2 :(得分:0)

def create_list(x):
   res = []
   for i in xrange(0,3):
      for j in xrange(0,3):
         res.append(3*x+ 9*i + j)
   return res

dictionary={}
for i in xrange(0,3):
   dictionary[i]=create_list(i)
print dictionary

结果:

{0: [0, 1, 2, 9, 10, 11, 18, 19, 20], 1: [3, 4, 5, 12, 13, 14, 21, 22, 23], 2: [6, 7, 8, 15, 16, 17, 24, 25, 26]}