我们假设我正在创建一个管理药物的程序。 在一个确定的函数中,我需要创建一个包含两个维度的列表,第一个列表用于药物,第二个列表用于它们的小时数。
我收到了以下代码:
for med in curr_result:
print(med)
hours_result = []
hours_result.append([med[3]])
for times in range(med[2]):
if times != 0:
hours_result[med_counter].append(
hours_result[med_counter][times - 1] + med[6])
med_counter = med_counter + 1
print(hours_result)
输出:
> ('Test1', '2014-03-16', 3, 7, 0, 0, 7)
> ('Test2', '2014-03-20', 1, 20,40, 1, 0)
> [[20]]
正确的结果是:
> [[7,14,21],[20]]
它有什么不对吗?
答案 0 :(得分:1)
你应该在外部for循环之外初始化 hours_result ,这里每个med都设置为[]
。
答案 1 :(得分:1)
您的数据似乎有一个架构:名称,日期,剂量,开始,?,期间, 而你似乎想要一个剂量小时列表:
curr_result = [('Test1', '2014-03-16', 3, 7, 0, 0, 7),
('Test2', '2014-03-20', 1, 20,40, 1, 0)]
hours_result = []
for med in curr_result:
hours = []
for time in range(med[2]):
hours.append(med[3] + time*med[6]) #
hours_result.append(hours)
print hours_result
打印:
[[7, 14, 21], [20]]