Mam listę jak poJak ustalić, czy lista dwuwymiarowa zawiera wartość?
mylist = [('value1', 'value2', 'value3'), ('secval1', 'secval2', 'secval3')]
jak mogę sprawdzić, czy lista zawiera „wartość2”?
Mam listę jak poJak ustalić, czy lista dwuwymiarowa zawiera wartość?
mylist = [('value1', 'value2', 'value3'), ('secval1', 'secval2', 'secval3')]
jak mogę sprawdzić, czy lista zawiera „wartość2”?
Korzystając any()
:
any('value2' in sublist for sublist in mylist)
Dzięki, jestem ciekawy, czy istnieje sposób, aby uzyskać przedmiot, który został dopasowany? – Tommyka
Aby uzyskać pozycję zawierającą wartość, której szukasz, powinieneś użyć zwykłej pętli 'for' i powrócić lub przerwać, gdy na liście znajduje się' 'value2''. Jeśli chcesz znaleźć wszystkie pasujące elementy, możesz użyć "[podlista dla podlist w mylist, jeśli" wartość2 "na podlistie]". –
można po prostu sprawdzić wszystkie listy zagnieżdżone z any
:
any('value2' in subl for subl in mylist)
podobny do any()
, rozwiązanie, które obsługuje również zwarcia:
>>> from itertools import chain
>>> mylist = [('value1', 'value2', 'value3'), ('secval1', 'secval2', 'secval3')]
>>> 'value2' in chain(*mylist)
True
dowód, że zwarcie takie jak any()
:
>>> it=chain(*mylist)
>>> 'value2' in it
True
>>> list(it) #part of iterable still not traversed
['value3', 'secval1', 'secval2', 'secval3']
'any' już robi zwarcie. Przetestuj go, tworząc klasę, która definiuje '__nonzero__', umieść tam instrukcję' print' i użyj jej jako drugiej wartości w argumencie do 'any' (kiedy pierwszym jest' True'). Instrukcja 'print' nie zostanie wykonana. –
@poorsod Wiem o tym, dlatego powiedziałem "" podobny do dowolnego() "'. :) –
Och, źle zrozumiałem - myślałem, że sugerujesz zastąpienie "jakiegokolwiek", który używa zwarcia. –
'value2' in (item for sublist in mylist for item in sublist)
Jeśli chcesz zobaczyć indeks wartości w wykazie 2 wymiarowej, użyłem tej odpowiedzi: https://stackoverflow.com/a/6518412/1799272 – Oli4