使用多个变量填充网格

Populating a grid with multiple variables

我断断续续地编写了大约 1 年半的代码,但我仍然不明白网格在 Python 中的工作原理。

所以我的问题是我必须制作一个网格来显示人口模型。所以我需要用不同的变量填充我的网格,这些变量会随着网格中每一行的变化而变化:

那我怎么知道呢?

你真的不需要网格的概念来完成你想要的。你只需要一个 generator 来将你的人口从一代传播到下一代。然后,您可以使用 Python 的 Format Specification Mini-Language 打印与示例输出匹配的 table 中的值。

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