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
은 대단히 감사합니다! '{:^10} \ t {:^8} \ t {:^6} \ t {:^7} \ t \ t {: ^}을 설명 할 수있게되었습니다. 5} - 그렇습니까? –
Python 형식 사양 미니 언어 설명서 (위 링크)를 참조하십시오. 중괄호 ('{}')의 각 집합은'.format' 메서드 호출의 압축 해제 된 인수를 포함하고'^ 10' 문자열은 문자열의 해당 필드에서 각 값이 가운데 정렬되도록 나타냅니다. – Billy