【发布时间】:2021-05-13 05:08:48
【问题描述】:
我必须编写一个函数,将列表作为输入,如果连续数字具有相同的符号,那么如果列表中没有打开新列表,它们都会进入列表中的同一个列表,例如:
[2,5,-3,-1,-1,3,-2,-2]->[[2,5]],[-3,-1,-1],[3],[-2,-2]]
这是我的代码:
def num_8(lst):
my_lst=[[lst[0]]]
j=0
for i in range(1,len(lst)):
if (lst[i]> 0 and lst[i-1]>0) or (lst[i]<0 and lst[i-1]<0):
my_lst[j].append(lst[i])
print(my_lst)
else:
j=j+1
my_lst[j].append([lst[i]])
return my_lst
print(num_8([2,5,-3,-1,-1,3,-2,-2]))
但我继续得到
my_lst[j].append([lst[i]])
IndexError: list index out of range
我不知道我是否超出范围:(谢谢
【问题讨论】:
-
在上述行中,您有两个列表访问。尝试将它们分开以隔离错误源是一个提示。但是因为在你的 if 条件下你已经访问
lst[i]没有问题我猜错误索引是my_lst[j]
标签: list for-loop indexing range