2016-11-18 1 views
-1

그래서 기본적으로 나는이 교체하려고 : A를이것을 for 루프로 만들려면 어떻게해야합니까?

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]} 

를 자동으로 생성합니다 루프. 죄송합니다이게 분명해 보이지만, 나는 약간의 멍청한 놈입니다. 그리고 저는 이것에 많은 어려움을 겪고 있습니다.

+1

우리는 – thefourtheye

+1

인사가 다음 그 목록을 수정/당신은 향상시킬 수 있습니다, 당신의 시도를 보여주십시오 [X, X + 1, X + 2, X + 9, X + (1 * 9), x + (1 * 9) +1, x + (1 * 9) +2] –

답변

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 

당신이 출력

첫 번째 (27)의 정수 (0부터 시작) 한 다음 그룹화를 생성하는 것처럼 보이는
2

에게 원하는 얻을 이것을 시도하십시오. 그렇게 쓰자.

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 

이 코드

그룹의 크기 (이 경우 세) 인수를함으로써 더 나은 될 수 있지만, 나는 독자에게 연습으로 떠날 것이다. ;)

이 방법의 장점은 찾고자하는 정확한 목록을 생성하는 일회용 메서드를 작성하는 것보다 훨씬 모듈화되고 적응력이 좋습니다. 어쨌든 당신이 보여준 하나의리스트 만 생성하고 싶다면 아마 그것을 하드 코딩하는 것이 낫습니다!

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]} 
관련 문제