我想把钱分配给操作符,但在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]
你是iterating over a list and modifying it at the same time,这总是会带来错误。如果不从循环中的列表中
remove
任何内容,它将更可预测。直接的解决方法是迭代一个副本,正如链接页面在接受的答案中所建议的那样。你知道吗或者,您可以稍微调整一下逻辑,例如,始终将贷款提供给当前金额最低的运算符:
在您的情况下,这将导致
[100, 400], [200], [300]
。你知道吗相关问题 更多 >
编程相关推荐