python - Python 中的迭代会抛出不想要的结果
问题描述
我正在尝试将存储在 p 向量中的付款分配给债务向量 l,因此我需要根据债务存储付款日期和每个付款日期的支付值。
此代码仅用于支付第一笔债务 ($254.000)(l 中的位置 0):[62998, datetime.date(2019, 11, 29), 254000.0]
期望的结果是:
- fechas_rec=[datetime.date(2020, 1, 30), datetime.date(2020, 2, 28)] 付款日期向量
- p=[[10000.0, datetime.date(2020, 2, 28)], [110000.0, datetime.date(2020, 3, 30)]] 使用可用金额更新付款。
- recuperados=[137500.0,116500.0] 根据点 1 的向量的支付向量。
但是,当用注释代码“recuperados.append('a')”更新倒数第二行“recuperados.append()”时,第一点的输出发生了变化,问题是为什么?
新的输出是:
fechas_rec=[datetime.date(2020, 2, 28), datetime.date(2020, 3, 30)]
代码:
l = [
[62998, datetime.date(2019, 11, 29), 254000.0],
[65317, datetime.date(2019, 12, 30), 229000.0],
[66606, datetime.date(2020, 1, 31), 229000.0],
[68751, datetime.date(2020, 2, 28), 228000.0],
[70652, datetime.date(2020, 3, 24), 229000.0],
]
p = [
[137500.0, datetime.date(2020, 1, 30)],
[126500.0, datetime.date(2020, 2, 28)],
[110000.0, datetime.date(2020, 3, 30)],
]
for j in l:
fechas_rec = []
recuperados = []
suma = 0
for i in enumerate(p):
suma = suma + i[1][0]
if suma <= j[2]:
fechas_rec.append(i[1][1])
recuperados.append(i[1][0])
else:
val = suma - j[2]
c = i[1]
del p[: i[0] + 1]
p.insert(0, [val, c[1]])
fechas_rec.append(i[1][1])
recuperados.append() # recuperados.append('a')
break
解决方案
代码:
l = [
[62998, datetime.date(2019, 11, 29), 254000.0],
[65317, datetime.date(2019, 12, 30), 229000.0],
[66606, datetime.date(2020, 1, 31), 229000.0],
[68751, datetime.date(2020, 2, 28), 228000.0],
[70652, datetime.date(2020, 3, 24), 229000.0],
]
p = [
[137500.0, datetime.date(2020, 1, 30)],
[126500.0, datetime.date(2020, 2, 28)],
[110000.0, datetime.date(2020, 3, 30)],
]
for j in l:
fechas_rec=[]
recuperados=[]
suma=0
for i in enumerate(p):
suma1=suma
suma=suma+i[1][0]
if suma<=j[2]:
fechas_rec.append(i[1][1])
recuperados.append(i[1][0])
else:
val=suma-j[2]
c=i[1]
del p[:i[0]+1]
p.insert(0,[val,c[1]])
fechas_rec.append(i[1][1])
recuperados.append(j[2]-suma1)
break
drec.append([j[0],fechas_rec,recuperados])
sumtot=sumtot+sum(drec[-1][2])
if sumtot==rectot:
test=True
if test:
break
推荐阅读
- .net - nVLC 设置选项
- angular - Angular component waiting for service to recive data from API
- javascript - React JSX - 以粗体显示子字符串
- excel - 将对象变量从单元格传递到(Excel)VBA
- c# - Extracting a specific word from another given string
- r - R:计算数据框中的元组
- java - Is there any good way retrieve data without rs.getString and save in .xls or .csv format?
- domain-driven-design - 如何用 DDD 建模这个场景?
- php - 在 Woocommerce 中添加除特定国家/地区以外的内联 CSS
- mysql - database design for quiz with different languages