【问题标题】:How can I remove specific index from list in python如何从python中的列表中删除特定索引
【发布时间】:2016-06-07 07:16:56
【问题描述】:

我试图弄清楚如何从列表中删除特定索引,但我不知道如何解决我的问题。有人可以帮我解决这个问题吗?

首先,我必须使用输入从用户那里获取一些数字。

numbers = int(input("input any numbers: "))
list_num = list(numbers)

其次,如果 list_num[0] == 1,则删除该元素。

第三,如果list_num[i+1] == list_num[i],删除list_num[i+1]。

所以,如果初始列表是这样的:list_num = [1,2,7,8,13,20,21]

最终名单将是list_num = [2,7,13,20]

这是要修复的程序:

 numbers = int(input("input any numbers:"))
 list_num = list(numbers)
 if list_num[0] ==1:
    list_num.remove(num[0])
 for i in range(1,len(list_num)-1, 1):
    if list_num[i] = list_num[i+1] -1:
         list_num.remove(num[i+1])
 print(list_num)

【问题讨论】:

  • 请注意,从列表中删除一个项目,同时迭代它会导致问题。最好使用列表推导式或其他方法来使用旧列表中的元素构建新列表。请参阅this 问题。
  • 只是为了好玩:print([item[0] for item in (list(x) for _, x in itertools.groupby(list_num, lambda v, c=itertools.count(): v - next(c)))]) :-)
  • 感谢所有 cmets,我编辑了我的问题以更有条理。 :)

标签: python list indexing


【解决方案1】:

您可以使用关键字 del 将其删除。这是一个例子。

my_list = [1, 2, 3, 4, 5]
del my_list[0] # 0 is the index

这将删除 my_list 的第一个索引。所以结果列表将是 [2, 3, 4, 5]

Here 是教程中的部分。

【讨论】:

    【解决方案2】:

    请再次检查您的问题。请更正您的问题,因为尚不清楚您要达到的目标。这是我认为您希望达到的两个条件。

    1. 如果 list[0] == 1 则删除该元素。
    2. 如果list[i+1]-1 == list[i] 则删除list[i+1]

    首先在你的代码第6行有一个错误,应该是if ==而不是if =。下面的代码将实现上述条件。

    numbers = int(input("Enter the limit for the list : "))
    
    list_num = []
    
    for i in range(0,numbers):
        list_num.append(int(input("list["+str(i)+"]: ")))
    
    if list_num[0] == 1:
        list_num.remove(list_num[0])
    try:
        for i in range(0,len(list_num)):
            if list_num[i] == list_num[i+1]-1:
                list_num.remove(list_num[i+1])
    except:
        print list_num
    

    输入:[1,2,7,8,13,20,21]

    输出:[2,7,13,20]

    【讨论】:

    • list[i+1]-1 == list[i]。不错的收获。
    【解决方案3】:

    您的代码存在多个问题,包括语法、缩进和逻辑。我已将您的代码格式化为工作方式。祝你好运。

    numbers = input("input any numbers:")
    list_num = list(numbers)
    
    ret = []
    for i,v in enumerate(list_num):
        if i == 0 and v == 1:
            continue
        if v == list_num[-1]:
            ret.append(v)
            break
        if v != list_num[i+1]:
            print v, list_num[i+1]
            ret.append(v)
    
    print(ret)
    

    【讨论】:

      猜你喜欢
      • 2022-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-13
      • 1970-01-01
      • 2022-07-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多