【问题标题】:creating a list in list python在列表python中创建一个列表
【发布时间】: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


【解决方案1】:

错误在于 else 部分。

此时my_lst[j]不存在(my_lst的len为j -1)

所以你必须将第一个数字附加到 my_lst 而不是 my_lst[j] (类似于你在函数第一行所做的)

my_lst.append([lst[i]])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-27
    • 1970-01-01
    • 1970-01-01
    • 2018-10-12
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    相关资源
    最近更新 更多