2017-02-13 1 views
1

약 1 년 반 동안 코딩을하고 있지만 파이썬에서 그리드가 작동하는 방식을 아직 이해하지 못했습니다.여러 변수로 격자 채우기

제 문제는 모집단 모델을 표시하기 위해 그리드를 만들어야한다는 것입니다. 그리드에있는 모든 행마다 다른 변수를 사용하여 그리드를 채울 필요가 있습니다.

그러면 어떻게됩니까?

답변

1

실제로 원하는 것을 달성하기 위해 그리드의 개념이 필요하지 않습니다. 한 세대에서 다른 세대로 인구를 전파하기 위해서는 generator가 필요합니다. 그런 다음 Python의 Format Specification Mini-Language을 사용하여 예제 출력과 일치하는 테이블의 값을 인쇄 할 수 있습니다.

def propagate(num_generations, population_start = None): 
    if population_start is None: 
     population = [10, 10, 10, 30] 
    else: 
     population = population_start 
    for gen in range(num_generations): 
     yield population 
     population = [population[1]*2, population[0], population[1]] 
     population.append(sum(population)) 

def print_propagation(num_generations, population_start = None): 
    print('GENERATION\tJUVENILES\tADULTS\tSENILES\t\tTOTAL') 
    for gen, pops in enumerate(propagate(num_generations, population_start)): 
     print('{:^10}\t{:^8}\t{:^6}\t{:^7}\t\t{:^5}'.format(gen, *pops)) 

당신과 같이 위의 기능을 사용할 수 있습니다

>>> list(propagate(6)) 
[[10, 10, 10, 30], 
[20, 10, 10, 40], 
[20, 20, 10, 50], 
[40, 20, 20, 80], 
[40, 40, 20, 100], 
[80, 40, 40, 160]] 

>>> print_propagation(6) 
GENERATION  JUVENILES  ADULTS SENILES   TOTAL 
    0    10    10  10    30 
    1    20    10  10    40 
    2    20    20  10    50 
    3    40    20  20    80 
    4    40    40  20    100 
    5    80    40  40    160 
+0

은 대단히 감사합니다! '{:^10} \ t {:^8} \ t {:^6} \ t {:^7} \ t \ t {: ^}을 설명 할 수있게되었습니다. 5} - 그렇습니까? –

+0

Python 형식 사양 미니 언어 설명서 (위 링크)를 참조하십시오. 중괄호 ('{}')의 각 집합은'.format' 메서드 호출의 압축 해제 된 인수를 포함하고'^ 10' 문자열은 문자열의 해당 필드에서 각 값이 가운데 정렬되도록 나타냅니다. – Billy

관련 문제