我想这么做
firstdates = dates[0]
paystring = []
for i in range(len(payment_months)):
if payment_months[i] < firstdates[i]:
paystring.append(0)
else:
paystring.append(((payment_months[i] + 12 - firstdates[i]) + 1) % 12)
print(paystring)
但是我想为所有的日期做这个,这是一个列表列表。例如,让我们只关注前两行日期。你知道吗
print(dates[0:2])
给了我
[[8, 8, 7, 7, 6, 5, 4, 4, 11, 10, 10, 8], [7, 6, 3, 2, 2, 2, 1, 0, 11, 10, 10, 9]]
以及
print(payment_months)
给了我
[8, 7, 6, 5, 4, 3, 2, 1, 12, 11, 10, 9]
运行此命令后:
paystring = []
for i in range(len(payment_months)):
paystring.append([])
for j in range(len(dates[i])):
if payment_months[i] < dates[i][j]:
paystring[i].append(0)
elif NDD_day[j] > 1:
paystring[i].append((payment_months[i] + 12 - dates[i][j]) % 12)
else:
paystring[i].append( ((payment_months[i] + 12 - dates[i][j]) + 1) % 12)
print(paystring[0:2])
我应该得到这个:
[[1, 0, 0, 0, 0, 0, 0, 0, 2, 2, 1, 2], [2, 2, 4, 4, 3, 2, 2, 2, 2, 2, 1, 1]]
但我得到的却是:
[[0, 0, 1, 1, 2, 3, 4, 5, 0, 0, 0, 0], [0, 1, 4, 5, 5, 5, 6, 8, 0, 0, 0, 0]]
有人能帮我修改代码吗?你知道吗
下面是一个手写的例子,应该非常清楚:
我尝试将代码更改为:
# Calculate paystring
paystring = []
for i in range(len(payment_months)):
paystring.append([])
for j in range(len(dates[i])):
if payment_months[i] < dates[j][i]:
paystring[i].append(0)
# elif NDD_day[j] > 1:
# paystring[i].append((payment_months[i] + 12 - dates[j][i]) % 12)
else:
paystring[i].append( ((payment_months[i] + 12 - dates[j][i]) + 1) % 12)
print(paystring[0:2])
给了我这个:
[[1, 2, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1], [0, 2, 0, 0, 0, 2, 0, 0, 1, 1, 0, 1]]
希望这有点帮助,我不知道为什么这是困惑也许我没有解释这是最好的。你知道吗
在对它进行了一段时间的摆弄之后,最终很明显您对
payment_months
使用了错误的索引,并且如果您希望dates
中的每一行都使用错误的range
进行迭代。你知道吗设置:
然后我们有:
输出:
根据需要。你知道吗
实际上,您可以完全避免这个问题,只需要做一点Pythonic(避免索引,只访问元素)。这也使得
dates
中的每一行都与payment_months
一一对应:嗯。你知道吗
相关问题 更多 >
编程相关推荐