ich mit elegantem Code zu kommen versuchen, die Kombinationen/Permutationen von Zeichen aus einem einzelnen Zeichen erstellt:Kombinationen und Permutationen der Zeichen
Z.B. von einem einzelnen Zeichen würde ich Code wie diese Permutationen erstellen (Reihenfolge des Ergebnisses ist nicht wichtig):
'a' ----> ['a', 'aa', 'A', 'AA', 'aA', 'Aa']
Die nicht so elegante Lösungen Ich habe bisher:
# this does it...
from itertools import permutations
char = 'a'
p = [char, char*2, char.upper(), char.upper()*2]
pp = [] # stores the final list of permutations
for j in range(1,3):
for i in permutations(p,j):
p2 = ''.join(i)
if len(p2) < 3:
pp.append(p2)
print pp
['a', 'aa', 'A', 'AA', 'aA', 'Aa']
#this also works...
char = 'a'
p = ['', char, char*2, char.upper(), char.upper()*2]
pp = [] # stores the final list of permutations
for i in permutations(p,2):
j = ''.join(i)
if len(j) < 3:
pp.append(j)
print list(set(pp))
['a', 'aa', 'aA', 'AA', 'Aa', 'A']
# and finally... so does this:
char = 'a'
p = ['', char, char.upper()]
pp = [] # stores the final list of permutations
for i in permutations(p,2):
pp.append(''.join(i))
print list(set(pp)) + [char*2, char.upper()*2]
['a', 'A', 'aA', 'Aa', 'aa', 'AA']
Ich bin nicht großartig mit lambdas, und ich vermute, dass dort, wo eine bessere Lösung liegt.
Könnten Sie mir helfen, den elegantesten/pythischsten Weg zum gewünschten Ergebnis zu finden?
Oooh zu bekommen, ich mag es. Obwohl ich dies tun würde, um es weniger kompliziert zu machen: pop + ['' .join (item) für Artikel im Produkt (pop, repeat = 2)] –
@JayMarm Die Antwort, die ich zur Verfügung gestellt habe, ist eine generische. Sie können es nach Ihren Bedürfnissen anpassen. – thefourtheye