La sintassi di succinta di Python tramite le batterie consente di esprimere una riga di codice dettagliata in una sola lettura. Considerare i seguenti esempiStruttura ad anello nidificato equivalente con Itertools
====================================================|
for a in range(3): |
for b in range(3): |
for c in range(3): |
print (a,b,c), |
- - - - - - - - - - - - - - - - - -|
for e in product(range(3), repeat=3): |
print e, |
====================================================|
for a in range(3): |
for b in range(a , 3): |
for c in range(b , 3): |
print (a,b,c), |
- - - - - - - - - - - - - - - - - -|
for e in combinations_with_replacement(range(3), 3):|
print e, |
====================================================|
for a in range(3): |
for b in range(a + 1, 3): |
for c in range(b + 1, 3): |
print (a,b,c), |
- - - - - - - - - - - - - - - - - -|
for e in combinations(range(3), 3): |
print e, |
====================================================|
for a in range(3): |
for b in range(3): |
for c in range(3): |
if len(set([a,b,c])) == 3: |
print (a,b,c), |
- - - - - - - - - - - - - - - - - -|
for e in permutations(range(3)): |
print e, |
====================================================|
negli ultimi tempi ho finito con un loop dipendente profonda nidificati che cercavo di esprimere in modo succinto ma non è riuscito
La struttura del ciclo sarebbe la seguente
for a in A():
for b in B(a):
for c in C(b):
foo(a,b,c)
Questa struttura può essere espressa in una notazione iternools equivalente?
Solo una nota. Quest'ultimo anello in Prolog sarebbe espresso come: 'a (A), b (A, B), c (B, C)'. Se ti piace giocare con i loop, gioca con Prolog. – liori
usi 'a',' b' (valori intermedi) nel corpo del ciclo più interno? – jfs
@liori: Prolog mi ha sempre allettato ma non è mai stato abbastanza intelligente da apprendere l'intelligenza artificiale – Abhijit