2012-05-02 11 views
174

Mam listę krotek w Python i mam warunkowe, w którym chcę wziąć gałąź TYLKO jeśli krotka nie znajduje się na liście (jeśli jest na liście , a następnie nie chcę brać oddziału). Co zrobiłem źle?Sprawdź, czy czegoś nie ma na liście w Pythonie

+9

Nie używaj 'list' jako zmienna Nazwa. Jaki jest tutaj wynik błędu? – bossylobster

+1

Należy zauważyć, że '3 -1> 0 i (4-1, 5) nie w []' ⤇ 'True' dlatego błąd nie jest jednym z priorytetów operatorów. –

+2

Co masz na myśli mówiąc "nie bardzo działa dla mnie"? Czego oczekujesz? Co się właściwie dzieje? Jaka dokładna zawartość listy wyzwala problem? –

Odpowiedz

269

Błąd jest prawdopodobnie gdzieś w kodzie, bo to powinno działać prawidłowo:

>>> 3 not in [2, 3, 4] 
False 
>>> 3 not in [4, 5, 6] 
True 

lub za krotki:

>>> (2, 3) not in [(2, 3), (5, 6), (9, 1)] 
False 
>>> (2, 3) not in [(2, 7), (7, 3), "hi"] 
True 
+8

@Zack: jeśli nie wiesz o to, możesz po prostu zrobić 'if not ELEMENT in COLLECTION:' – ninjagecko

+0

@ninjagecko: w zależności od typu kontenera, który może być mniej wydajny, a nawet niepoprawny. Zobacz na przykład [filtry bloom] (http://en.wikipedia.org/wiki/Bloom_filter). – orlp

+0

to był sposób, w jaki definiowałem moje krotki na liście, dzięki chłopaki – Zack

-1
a = [23, 11, 21, 34, 53, 89, 133, 211, 345, 535, 895] 

b = [11, 32, 33, 45, 25, 66, 87, 863, 97, 130, 141, 126, 13] 

x=[] 
for i in a: 
    for j in b: 
     if i==j and j not in x: 
      x.append(j) 

print(x) 
Powiązane problemy