Python在list append之后跳转到另一个变量

2024-04-27 18:48:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把钱分配给操作符,但在append for loop跳转之后,不分配给另一个变量:

op1 = []
op2 = []
op3 = []
operators = [op1, op2, op3]
unsigned_loans = [100, 200, 300, 400]

sum_of_all_loans = 0

for loan in unsigned_loans:
    sum_of_all_loans += loan

per_user_amount = sum_of_all_loans / len(operators)

unsigned_loans.sort()



for oper in operators:
    for loan in unsigned_loans:
        print(loan)
        if sum(oper) < per_user_amount:
            oper.append(loan)
        unsigned_loans.remove(loan)
    print(oper)

输出应为:

 op1=[100, 200] op2=[300] op3=[400]

但现在它显示出来了

op1=[100, 300] op2=[200] op3=[400]

Tags: ofinforallsumperappendloan
1条回答
网友
1楼 · 发布于 2024-04-27 18:48:38

你是iterating over a list and modifying it at the same time,这总是会带来错误。如果不从循环中的列表中remove任何内容,它将更可预测。直接的解决方法是迭代一个副本,正如链接页面在接受的答案中所建议的那样。你知道吗

或者,您可以稍微调整一下逻辑,例如,始终将贷款提供给当前金额最低的运算符:

for loan in unsigned_loans:
     oper = min(operators, key=sum)
     oper.append(loan)

在您的情况下,这将导致[100, 400], [200], [300]。你知道吗

相关问题 更多 >