2016-06-07 11 views
-1

Ich versuche herauszufinden, wie bestimmte Index aus der Liste entfernen, aber ich weiß nicht, wie ich mein Problem beheben. Kann mir jemand helfen, das zu lösen?Wie kann ich bestimmte Index aus Liste in Python entfernen

Zuerst muss ich einige Zahlen von Benutzern mit Eingabe erhalten.

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

Zweitens, wenn list_num [0] == 1, entfernen Sie dieses Element.

Drittens, wenn list_num [i + 1] == list_num [i], entfernen Sie list_num [i + 1].

Also, wenn die erste Liste so geht: list_num = [1,2,7,8,13,20,21],

die endgültige Liste wird list_num = [2,7,13,20]

sein Dies wird das Programm zu befestigenden:

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) 
+0

Beachten Sie, dass ein Element aus einer Liste zu entfernen während es durchläuft, wird Probleme verursachen. Es empfiehlt sich, ein Listenverständnis oder eine andere Methode zu verwenden, um eine neue Liste mit Elementen aus dem alten zu erstellen. Siehe [this] (http://stackoverflow.com/questions/1207406/remove-items-from-a-list-while-iterating-in-python) Frage. – SiHa

+0

Nur zum Spaß: 'Drucken ([Element [0] für Element in (Liste (x) für _, x in itertools.groupby (Liste_num, Lambda v, c = itertools.count(): v - next (c)))]) ':-) – Matthias

+0

Vielen Dank für alle Kommentare, und ich habe meine Frage bearbeitet, um besser organisiert zu sein. :) – jay0904

Antwort

1

Bitte überprüfen Sie Ihre Frage noch einmal. Bitte korrigieren Sie Ihre Frage, da unklar ist, was Sie erreichen möchten. Dies sind die beiden Bedingungen, die Sie meiner Meinung nach erreichen möchten.

  1. wenn list[0] == 1 dann das Element entfernen.
  2. wenn list[i+1]-1 == list[i] dann list[i+1]

allererst in Zeile 6 des Codes entfernen gibt es einen Fehler, sollte es if == und nicht if = .Die folgenden Code wird die oben genannten Bedingungen erreichen.

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 

Input: [1,2,7,8,13,20,21]

Ausgang: [2,7,13,20]

+0

'Liste [i + 1] -1 == Liste [i]'. Netter Fang. – Matthias

2

Sie können es löschen, indem Sie mit Schlüsselwort del. Hier ist das Beispiel.

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

wird dies der erste Index von my_list löschen. So wird die sich ergebende Liste [2, 3, 4, 5]

Here ist der Abschnitt, aus dem Tutorial.

-1

Es gab mehrere Probleme mit Ihrem Code, einschließlich Syntax, Einrückung und Logik. Ich habe deinen Code funktional formatiert. Viel Glück.

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) 
Verwandte Themen