我试图遍历一个列表(a)来创建另一个列表(B)。如果列表A中的条目与列表A中的上一个条目相同,我想用列表B中上一个条目的相同值附加列表B。如果列表A中的条目不相同,我想增加列表B中的计数。例如
list A = ['2014-06-01', '2014-06-01', '2014-06-02', '2014-06-03', '2014-06-03', '2014-06-03']
我想要
list B = [0, 0, 1, 2, 2, 2]
我得到一个'列表索引超出范围'错误,我不明白为什么。你知道吗
list_of_dates = ['2014-06-01', '2014-06-01', '2014-06-02', '2014-06-03', '2014-06-03', '2014-06-03']
case_day_count = [0]
for i in xrange(1,len(list_of_dates)):
if i == 1:
continue
if list_of_dates[i] == list_of_dates[(i-1)]:
case_day_count.append(case_day_count[(i-1)])
else:
case_day_count.append(case_day_count[(i-1)]+1)
我觉得你犯了点小错误 您应该删除第一个if语句:
我把它去掉了,得到了你想要的结果。你知道吗
记住,列表索引以0开头。 您的语句说“跳过第二个元素(索引1)”。而实际上您想跳过第一个元素(索引0)。你知道吗
因为您是从第二个元素(索引1)开始的,所以不需要这个if语句。你知道吗
你可以用这样的方法:
但这里到底发生了什么还不清楚。相反,这可能是一个更好的折衷方案:
两者都产生
[0, 0, 1, 2, 2, 2]
当您尝试分配给
case_day_count[1]
时,case_day_count
的初始长度为1,这将是1元素列表的第二个元素,因此它会导致IndexError
。你知道吗如果将
case_day_count
初始化为:你会得到你想要的名单。你知道吗
相关问题 更多 >
编程相关推荐