Na przykład chcę sprawdzić, czy wszystkie elementy krotki (1, 2)
są w krotce (1, 2, 3, 4, 5)
. Nie sądzę, aby użyć pętli jest dobrym sposobem, aby to zrobić, myślę, że można to zrobić w jednym wierszu.Jak sprawdzić, czy wszystkie elementy w krotce lub liście znajdują się w innym?
Odpowiedz
Możesz użyć set.issubset
lub set.issuperset
, aby sprawdzić, czy każdy element w jednej krotce lub liście jest w innym.
>>> tuple1 = (1, 2)
>>> tuple2 = (1, 2, 3, 4, 5)
>>> set(tuple1).issubset(tuple2)
True
>>> set(tuple2).issuperset(tuple1)
True
Inną alternatywą byłoby stworzenie prostej funkcji, gdy zestaw nie przychodzi do głowy.
def tuple_containment(a,b):
ans = True
for i in iter(b):
ans &= i in a
return ans
Teraz wystarczy je przetestować
>>> tuple_containment ((1,2,3,4,5), (1,2))
True
>>> tuple_containment ((1,2,3,4,5), (2,6))
False
OP wyraźnie wspomniano "Nie ma pętli". * jedna linia * – styvane
I wyraźnie wspomniałem, że moje jest, gdy _obvious nie przychodzi do głowy_ –
Co robi 'tuple_checker'? Sprawdź równość, powstrzymanie lub po prostu, czy są to krotki? –
Myślę, że chcesz to: (Użyj all)
>>> all(i in (1,2,3,4,5) for i in (1,6))
True
Czy te krotki sortowane? –