Полагаю, вы хотите что-то вроде нумерации всех элементов, независимо от уровня вложенности.Может быть, следующее поможет.Не забудьте создать новый number
для каждого списка понимания.next
может быть написано __next__
в вашей версии Python.
>>> import itertools
>>> number = itertools.count().next
>>> [(number(), [(number(), x + 1) for x in range(y) if x % 2]) for y in range(10) if y % 3]
[(0, []), (1, [(2, 2)]), (3, [(4, 2), (5, 4)]), (6, [(7, 2), (8, 4)]), (9, [(10, 2), (11, 4), (12, 6)]), (13, [(14, 2), (15, 4), (16, 6), (17, 8)])]
Обновление: Я знаю, вам нужны разные счетчики для каждого уровня вложенности.Просто используйте более одного счетчика:
>>> number1 = itertools.count().__next__
>>> number2 = itertools.count().__next__
>>> print([(number1(), [(number2(), x + 1) for x in range(y) if x % 2]) for y in range(10) if y % 3])
[(0, []), (1, [(0, 2)]), (2, [(1, 2), (2, 4)]), (3, [(3, 2), (4, 4)]), (4, [(5, 2), (6, 4), (7, 6)]), (5, [(8, 2), (9, 4), (10, 6), (11, 8)])]
То есть, замените _
на number1()
, как определено выше, __
на number2()
и так далее.Вот и все.