2016-05-08 7 views
0

Leute, die ich versuche, dieses Programm zu machen, wo ich eine Liste nehmen und alle nicht eindeutigen Elemente trennen und es in eine Liste einfügen muss, ohne die Reihenfolge davon zu ändern. zum Beispiel
[1,2,3,1,3] = [1,3,1,3]
[5,5,5,5] = [5,5,5,5]
[1,2 , 3,4,5] = []Liste in einer "for" -Schleife zurückgesetzt

Also habe ich das Programm in Python gemacht und einige Flags gesetzt, um mir zu helfen, wo ich falsch mache. So habe ich im Programm versucht, den list3 Wert zurückzusetzen (nachdem ich ein Element in einer Schleife gelöscht habe und es verlassen habe), aber ich würde es nicht tun lassen. So würde jede Hilfe sehr geschätzt werden. Danke euch sehr.

list1=[1,2,3,1,3] 
list2=[] 
d=0 
m=0 
l=len(list1) 
print(l) 
for x in range(0,l): 
    print('for loop') 
    list3=list1 # I used this to reset the list3 to list1 and use it in the loop but it wouldn't reset 
    print('this is the reset of list 3',list3) 
    m=list1[x] 
    print(m,x) 
    print(list3[x]) 
    del (list3[x]) 

    while True: 
     print('while loop',list3[d]) 

     if m==list3[d]: 
      print('its here') 
      list2.append(m) 
      print('this is list2: ',list2) 
     d+=1 

     if d==lenght(list3)-1: 
      print('its here22222') 
      break 
print(list2) 

# my results were 

5 
for loop 
this is the reset of list 3 [1, 2, 3, 1, 3] 
1 0 
1 
while loop 2 
while loop 3 
while loop 1 
its here 
this is list2: [1] 
its here22222 
for loop 
this is the reset of list 3 [2, 3, 1, 3] 
3 1 
IndexError: list index out of range 
+1

list3 = list1 nicht list1 kopiert werden, finden http://stackoverflow.com/questions/2612802/how-to-clone-or-copy-a-list-in-python – paisanco

Antwort

0

Tut es das, was Sie wollen?

#list1=[5,5,5,5,5] 
list1=[1,2,3,1,3] 
#list1=[1,2,3,4,5] 
list2=[] 

for num in list1: 
    if list1.count(num) > 1: 
     list2.append(num) 

print(list2) 
+0

es funktioniert. Ich kenne die Zählfunktion. Ich habe es auch benutzt. aber ich verstehe einfach nicht, warum die list3 in der 9. Zeile die list3 nicht auf list1 setzt. Vielen Dank @ dovo36. :) – vineeth

+0

Oh, ok. Es ist wie Paisonco oben gesagt. list3 = list1 macht list3 auf denselben Speicher wie list1. Also dann sind es 2 verschiedene Labels für die gleiche Sache. Wenn Sie list1 kopieren und list3 überschreiben möchten, dann lesen Sie den Link, den er Ihnen gegeben hat, es zeigt die verschiedenen Möglichkeiten, die Sie tun können. – davo36

+0

danke viel @ davo36. das hat mir wirklich geholfen – vineeth