a = [1,2,3,4,5]
b = [1,3,5,6]
c = a and b
print c
tatsächliche Leistung: [1,3,5,6]
erwartete Ausgabe: [1,3,5]
Wie kann man eine boolesche UND-Verknüpfung (Listenschnittmenge) zweier Listen erreichen?
a = [1,2,3,4,5]
b = [1,3,5,6]
c = a and b
print c
tatsächliche Leistung: [1,3,5,6]
erwartete Ausgabe: [1,3,5]
Wie kann man eine boolesche UND-Verknüpfung (Listenschnittmenge) zweier Listen erreichen?
Ein funktioneller Weg kann erreicht werden durch filter
y lambda
Betreiber.
list1 = [1,2,3,4,5,6]
list2 = [2,4,6,9,10]
>>> list(filter(lambda x:x in list1, list2))
[2, 4, 6]
Bearbeiten: Es filtert x heraus, das sowohl in list1 als auch in list vorhanden ist, Set-Differenz kann auch mit erreicht werden:
>>> list(filter(lambda x:x not in list1, list2))
[9,10]
Bearbeiten2: python3 filter
gibt ein Filterobjekt zurück und kapselt es mit list
gibt die Ausgabeliste zurück.
Für den Fall, dass Sie eine Liste von Listen haben map
ist praktisch:
>>> lists = [[1, 2, 3], [2, 3, 4], [2, 3, 5]]
>>> set(lists.pop()).intersection(*map(set, lists))
{2, 3}
würde für ähnliche Iterables funktionieren:
>>> lists = ['ash', 'nazg']
>>> set(lists.pop()).intersection(*map(set, lists))
{'a'}
pop
wird fehlschlagen, wenn die Liste leer ist, so dass Sie vielleicht in eine Funktion einschließen möchten:
def intersect_lists(lists):
try:
return set(lists.pop()).intersection(*map(set, lists))
except IndexError: # pop from empty list
return set()
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.