2017-09-25 125 views
1

我写了一个函数来删除给定列表中指定的项目。降低程序的时间复杂度

def remove_given_elements(arr1) : 
    b = [] 
    x = int(input("Enter the number of items to be removed :")) 
    for i in range(x) : 
     y = int(input("Enter the position to be removed :")) 
     b.append(y) 

    arr3 = [] 
    pos = 0 

    for i in range(len(arr1)) : 
     arr3.append(arr1[i]) 
     for j in range(len(b)): 
      if pos == b[j]: 
       arr3.pop(b[j]) 
       arr3.append(None) 
     pos += 1 

    arr4 = [] 

    for i in arr3: 
     if i != None : 
      arr4.append(i) 

    return arr4 

a = [100,200,323,434,512,656] 
print("After removing elements",remove_given_elements(a)) 

输出:

Enter the number of items to be removed :3 
Enter the position to be removed :1 
Enter the position to be removed :3 
Enter the position to be removed :4 
After removing elements [100, 323, 656] 

至于,我是新来编程。我真的不知道有什么方法来减少我最坏的情况下的时间复杂度。任何形式的帮助表示赞赏或请指导我使用减少时间复杂性的适当方法。

+0

你需要指定项目的金额将被删除? – Eduardo

+0

@Eduardo是的,因为我想删除多个项目。 –

回答

0

您可以先询问职位并将其存储在元组中。然后应用该功能。

def remove(_list, pos): 
    return [v for i, v in enumerate(_list) if i not in pos] 

positions = (1, 2, 3) 
l = [1, 2, 3, 4, 5, 6, 7] 
result = remove(l, positions) 
print(result) 

该函数返回一个List Comprehension

+0

谢谢这是有帮助的,我也从中学到了一些东西。 –