roschi hat geschrieben:hallo!
ich braeuchte wieder einmal eure hilfe, um etwas zu realisieren:
ich habe einen string - zum beispiel 'eis'. jetzt will ich aus diesem string alle kombinationen der zeichen haben. bei 'eis' waere das also:
'eis', 'sie', 'sei', 'ies', 'ise', 'esi', 'ei', 'ie', 'es'. 'se'. 'e'. 'i', 's'
kann mir jemand sagen, wie ich das anstellen koennte?
Auf die Schnelle mal zusammen gebastellt...
(funzt aber imho nicht mit doppelten Zeichen wie 'eise', daher auch die Prüfung mit "not .. in")
Code: Alles auswählen
def permut(lst=[],num=1,lst2=False):
def _permut(lst1=[],lst2=False):
lst=lst1
if not lst2:
temp = lst[:]
else:
temp = lst2[:]
res=[]
for i in xrange(0,len(lst),len(temp)):
for j in xrange(0,len(temp)):
temp.append(temp.pop(0))
for k in xrange(0,len(temp)):
if not temp[k] in lst[i+k]: res += [lst[i+k] + temp[k]]
return res
res=lst[:]
if not lst2:
for i in xrange(1,num):
res = _permut(res,lst)
else:
res = _permut(res,lst2)
return res
###
li=list('1234')
res=permut(li,1)
print "1 Zeichen (%s):\n%s" %(len(res),res)
res=permut(li,2)
print "2 Zeichen (%s):\n%s" %(len(res),res)
res=permut(li,3)
print "3 Zeichen (%s):\n%s" %(len(res),res)
print "or"
res=permut(permut(permut(li,1,li),1,li),1,li)
print "4 Zeichen (%s):\n%s" %(len(res),res)
l=map(list,('1','12','123','1234','12345','123456','1234567','12345678'))
for i in l:
print "Anzahlen fuer:",i
for j in xrange(1,len(i)+1):
print "%s : " %(len(permut(i,j))),