Синтаксис синтаксиса Python через свои батареи позволяет выражать выраженную строку кода в читаемых одном лайнерах. Рассмотрим следующие примерыЭквивалентная структура вложенной петли с помощью 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, |
====================================================|
Из Late я закончил с глубоким вложенной зависимой петли я пытался выразить лаконично, но не
Структура цикла будет выглядеть следующим образом
for a in A():
for b in B(a):
for c in C(b):
foo(a,b,c)
Может ли такая структура выражаться в эквивалентной нотации itertools?
Просто примечание. Этот последний цикл в Prolog был бы выражен как: a (A), b (A, B), c (B, C) '. Если вам нравится играть с петлями, играйте с Prolog. – liori
Используете ли вы 'a',' b' (промежуточные значения) в теле самого внутреннего цикла? – jfs
@ liori: Пролог всегда завлекал меня, но никогда не был достаточно умным, чтобы изучать искусственный интеллект. – Abhijit