l=[None,None]
istnieje funkcja, która sprawdza, czy lista l zawiera jedynie None czy nie?jak sprawdzić, czy lista zawiera tylko None w python
l=[None,None]
istnieje funkcja, która sprawdza, czy lista l zawiera jedynie None czy nie?jak sprawdzić, czy lista zawiera tylko None w python
Jeśli masz na myśli, aby sprawdzić, czy lista l
zawiera tylko Zadne
if all(x is None for x in l):
...
"... zawiera tylko brak" LUB jest puste. – Constantin
@system: Dlaczego nie? – kennytm
@systempuntoout, w rzeczywistości jest to wyrażenie generujące. – Constantin
Wypróbuj any()
- sprawdza, czy na liście znajduje się pojedynczy element, który w kontekście boolowskim jest uważany za True
. None
ocenia się na False
w kontekście logicznym, więc any(l)
staje się False
.
Należy pamiętać, że aby sprawdzić, czy lista (a nie jej zawartość) jest naprawdę None
, należy użyć if l is None
. I if not l
, aby sprawdzić, czy jest to Brak (lub cokolwiek innego, co jest uważane za False
) lub pusty.
>>> dowolne ([Brak, Żadne, 0]) da Fałszywą –
Jak doszedłem tak daleko, nie słysząc o 'any()'? Niesamowity. – otocan
L == [None] * len(L)
jest znacznie szybsze niż przy użyciu wszystkich(), gdy L jest wszystkie żadne
$ python -m timeit -s'L=[None]*1000' 'all(x is None for x in L)'
1000 loops, best of 3: 276 usec per loop
$ python -m timeit -s'L=[None]*1000' 'L==[None]*len(L)'
10000 loops, best of 3: 34.2 usec per loop
Jeśli chcesz sprawdzić, czy członkowie listy mają wartość None, możesz zapętlić pozycje i sprawdzić, czy są one nieobecne:
Jeśli chcesz sprawdzić, czy sama lista jest None, można użyć typu (varlist) i zwróci None
można zrobić
if (LST == None): ... print "tak"
działa.
ja osobiście wolę dokonywania set
a następnie sprawdzenie, czy jest on równy zestawie z jednym elementem None
:
set(l) == {None}
assert set([None, None, None]) == {None}
assert set([None, 2, None]) != {None}
nie najszybszy, ale jeszcze szybciej niż realizacja all(...)
:
$ python -m timeit -s'L=[None]*1000' 'all(x is None for x in L)'
10000 loops, best of 3: 59 usec per loop
$ python -m timeit -s'L=[None]*1000' 'set(L)=={None}'
100000 loops, best of 3: 17.7 usec per loop
$ python -m timeit -s'L=[None]*1000' 'L==[None]*len(L)'
100000 loops, best of 3: 7.17 usec per loop
dzięki @JohnLaRooy za kod testowy –
Co czy powinien powrócić do pustej listy '[]'? – Constantin
możliwy duplikat [Jak sprawdzić, czy wszystkie pozycje na liście są Brak?] (Http://stackoverflow.com/questions/6518394/how-to-check-if-all-items-in-the-list-are- -none) –
możliwy duplikat [najbardziej zwięzły sposób sprawdzenia, czy lista jest pusta lub \ [Brak \]?] (http://stackoverflow.com/questions/1270920/most-concise-way-to-check-whether -a-list-is-empty-or-none) – ThiefMaster