Forum
>>
Principianti
>>
Calcolo disposizioni con ripetizione - itertools?
Pagina: 1
Esegui il login per scrivere una risposta.
Pagina: 1
|
Scritto da marcos |
2024-10-14 08:09:51 - Calcolo disposizioni con ripetizione - itertools?
|
|
Ciao,
dovrei calcolare tutte le disposizioni di una lista di elementi in cui gli elementi possono esser ripetuti. Ad es. se gli elementi sono [a,b,c] e la stringa finale composta di 4 elementi dovrei ottenere aaaa aaab cccc abcd e cosi' via Il numero di stringhe in output e' n^k dove n = numero di elementi nella lista e k= lunghezza della stringa Ho visto che esiste il modulo itertools ma non mi pare contempli questo caso. Esiste un sistema veloce? Grazie Marco |
|
|
Scritto da nuzzopippo ![]() |
2024-10-14 09:09:51 - Re: Calcolo disposizioni con ripetizione - itertools?
|
Ciao ... beh, forse esiste
Python 3.12.3 (main, Sep 11 2024, 14:17:37) [GCC 13.2.0] on linux
Type "help", "copyright", "credits" or "license()" for more information.
import itertools
data = ['a', 'b', 'c']
result = itertools.combinations_with_replacement(data, 4)
for c in result:
print(''.join(c))
aaaa
aaab
aaac
aabb
aabc
aacc
abbb
abbc
abcc
accc
bbbb
bbbc
bbcc
bccc
cccc
Leggendo meglio, forse vorresti ottenere "Tutte" le possibili combinazioni, dato che quella sopra non è completa ... in tal caso combinando con itertools.permutations e smanettando un pochino si potrebbe (occhio sono TANTE) comp = []
result = itertools.combinations_with_replacement(data, 4)
for e in result:
per = itertools.permutations(e)
for c in per:
comp.append(''.join(c))
final = sorted(list(set(comp)))
for v in final:
print(v)
aaaa
aaab
aaac
aaba
aabb
aabc
aaca
aacb
aacc
abaa
abab
abac
abba
...
accc
baaa
baab
baac
baba
...
etc ...
--- Ultima modifica di nuzzopippo in data 2024-10-14 09:43:20 --- Fatti non foste a viver come bruti... |
|
|
Scritto da marcos |
2024-10-14 16:12:11 - Re: Calcolo disposizioni con ripetizione - itertools?
|
|
|
|
Scritto da dwightslater |
2025-09-19 10:17:12 - Re: Calcolo disposizioni con ripetizione - itertools?
|
|
Per ottenere tutte le disposizioni con ripetizione puoi usare direttamente itertools.product. Passando repeat=k generi in modo efficiente tutte le combinazioni possibili (n^k) senza dover implementare tu stesso la logica. È esattamente lo strumento adatto al tuo caso.
|
Pagina: 1
Esegui il login per scrivere una risposta.

