Wenn ich zwei Zeichenfolgen hätte 'abc'
und 'def'
, könnte ich alle Kombinationen davon mit zwei for-Schleifen erhalten:
for j in s1:
for k in s2:
print(j, k)
Ich möchte dies jedoch mithilfe des Listenverständnisses tun können. Ich habe viele Möglichkeiten ausprobiert, aber es nie geschafft, es zu bekommen. Weiß jemand, wie man das macht?
python
for-loop
list-comprehension
John Howard
quelle
quelle
L1 = [[[e1, e2, ...], ...], ...]
->[ e for L2 in L1 for L3 in L2 for e in L3 ]
for
Anweisungen ist dieselbe, als hätten Sie sie als zweifor
Schleifen in zwei separaten Zeilen geschrieben.lst = [j+k if BLAHBLAHBLAH for j in s1 for k in s2]
oder soDa es sich im Wesentlichen um ein kartesisches Produkt handelt, können Sie auch itertools.product verwenden . Ich denke, es ist klarer, besonders wenn Sie mehr iterable Eingaben haben.
itertools.product('abc', 'def', 'ghi')
quelle
Versuchen Sie auch die Rekursion:
s="" s1="abc" s2="def" def combinations(s,l): if l==0: print s else: combinations(s+s1[len(s1)-l],l-1) combinations(s+s2[len(s2)-l],l-1) combinations(s,len(s1))
Gibt Ihnen die 8 Kombinationen:
abc abf aec aef dbc dbf dec def
quelle