繁体   English   中英

在Python中创建列表列表

[英]Creating a List of lists in Python

我正在研究金融计算器。 我目前拥有它,因此每次代码循环时,它都会添加到结果列表中。 我打算将这些结果添加到新列表中,以循环输入的次数。 修改功能将确保第一个列表在每个循环中都有不同的结果,这是因为它随机化了通胀和利率。

例如,输入模拟量为10,因此它将循环10次。 每次循环时,都会将列表结果添加到列表模拟中,然后重置列表结果。 这将导致10个不同的列表列表

目前,我正在获取所需的输出,但是仅将第一个循环添加到第二个列表中,因此,例如,它仅将第一个循环重复10次,而不是每次都进行重置和随机化。

def modify_rate(interest_rate, interest_change):

   return interest_rate + interest_change * (1 - random.random() * 2)

def modify_rate(inflation_rate, inflation_change):

   return inflation_rate + inflation_change * (1 - random.random() * 2)

def run_simulation():
years, annual_spend, savings_balance, inflation_rate, interest_rate, interest_change, inflation_change, sims  = inputs()
simulations = []
i = 0
 for x in range(0, sims):
    result = []
    while i < years:
        interest_rate = modify_rate(interest_rate, interest_change)
        inflation_rate = modify_rate(inflation_rate, inflation_change)
        i = i + 1
        totalcost = annual_spend * (1 + inflation_rate) ** 1
        annual_spend = totalcost
        totalsave = savings_balance - annual_spend
        savings_balance = totalsave
        x = savings_balance * (1 + interest_rate) ** 1
        savings_balance = round(x, 2)
        result.append(savings_balance)
        if i >=years:
            break
        elif savings_balance < 0:
            break
        simulations.append(result)
print(simulations)

我创建了一个微型示例,其中将计算添加x次数,然后将结果添加到列表,然后将其添加到另一个列表x次数

x = int(input("enter"))
y = int(input("enter"))
k = int(input("enter"))
a = []
i = 0
h= []
for x in range(0, k):
while i < y:
            i = i + 1
            z = x + 10 + i
            a.append(z)
            if i >= y:
                break
h.append(a)  
print(h)

任何指导将不胜感激 :)

x = int(input("enter"))
y = int(input("enter"))
k = int(input("enter"))
h= []
for x in range(0, k):
    a = []
    i = 0
    while i < y:
            i += 1
            z = x + 10 + i
            a.append(z)
    h.append(a)  
print(h)

每次for循环执行时,列表“ a”会自动重置,您无需指定条件是否在while中,因为条件已经在while中

我不确定我是否完全理解您的代码,但是关于您的迷你示例,您希望进行一次y次计算,将结果放入列表中,并且此列表将被添加到k次其他列表中。

base_value = int(input("enter"))         # your x
nb_calculations = int(input("enter"))    # your y
nb_simulations = int(input("enter"))     # your k

final_list= []                           # your h

for value in range(nb_simulations):

    print('working on simulation: ', value)
    temp_list = []                       # your a
    i = 0                                # your i  


    while i < nb_calculations:
        print('working on calculation: ', i)

        new_value = base_value + 10 + i
        temp_list.append(new_value)

        print('base value: ', base_value)
        print('new value: ', new_value)
        print('temp list: ', temp_list)

        i += 1

    print('final temp list: ', temp_list)
    print('len temp list equal to nb_calculations: ', len(temp_list) == nb_calculations)

    final_list.append(temp_list)

    print('final list: ', final_list)
    print('len final list: ', len(final_list))

print('final list at the end: ', final_list)
print('len final list at the end: ', len(final_list))
print('len final list equal to nb_simulations: ', len(final_list) == nb_simulations)

当然, temp_list将始终相同,而计算将始终相同。 但是计算完成了nb_calculations次,将结果放入一个列表中,并将此列表添加到另一个列表中nb_simulations次。

设法解决了这个问题,不知道这是否是最有效的方法,但无论如何还是要张贴

def run_simulation():
years, annual_spend, savings_balance, inflation_rate, interest_rate, interest_change, inflation_change, sims  = inputs()
simulations = []
loop = 0
for loop in range(0, sims):
    success = 0
    fail = 0
    initial1 = interest_rate
    initial2 = inflation_rate
    initial3 = annual_spend
    initial4 = savings_balance
    i = 0
    result = []
    while i < years:
        interest_rate = modify_rate(interest_rate, interest_change)
        inflation_rate = modify_rate(inflation_rate, inflation_change)
        i = i + 1
        totalcost = annual_spend * (1 + inflation_rate) ** 1
        annual_spend = totalcost
        totalsave = savings_balance - annual_spend
        savings_balance = totalsave
        x = savings_balance * (1 + interest_rate) ** 1
        savings_balance = round(x, 2)
        result.append(savings_balance)
        if i >=years:
            break
        elif savings_balance < 0:
            break
    simulations.append(result)
    inflation_rate = initial1
    interest_rate = initial2
    annual_spend = initial3
    savings_balance = initial4        
    loop =+1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM