使用多个变量填充网格

时间:2017-02-13 12:27:06

标签: python grid python-3.4

我现在已经编写了大约1年半的编码,但是我仍然不知道Python中的网格如何工作。

所以我的问题是我必须制作一个网格来显示人口模型。因此,我需要使用不同的变量填充网格,这些变量会针对网格中的每一行进行更改:

那么我怎么能得到这个呢?

1 个答案:

答案 0 :(得分: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