Поддерживать счетчик при понимании списка Python

Есть ли в Python какой-либо счетчик , доступный во время понимания списка, как это было бы в случае цикла for ?

В этом примере было бы более ясно, зачем мне нужен счетчик:

Я хочу добиться следующего:

Исходный список: [' p ',' q ',' r ',' s ']

Желаемый список: [(1,' P '), (2,' Q '), (3,' R '), ( 4, 'S')]

В желаемом списке первым элементом каждого кортежа являются порядковые числа. Если бы это был простой список, я мог бы использовать zip для достижения этой цели. Но, тем не менее, список, с которым я имею дело, является вложенным, трехуровневым (подумайте об иерархических данных), и он генерируется через понимание списка.

Итак, мне было интересно, есть ли способ ввести эти порядковые номера во время понимания списка. Если нет, то какое решение было бы наилучшим.

P.S. : Здесь строчные буквы преобразуются в прописные, но это не является частью проблемы, воспринимайте это как просто преобразование данных.

Код:

allObj = Category.objects.all()

tree =[(_, l1.name, [(__, l2.name, [(___, l3.name) for l3 in allObj if l3.parentid == l2.categoryid]) for l2 in allObj if l2.parentid == l1.categoryid]) for l1 in allObj if l1.parentid == None]

allObj содержит данные из категории таблицы, которая, в свою очередь, содержит иерархические данные, представленные в форме списка смежности.

Я поместил _ там, где мне нужны порядковые номера. Обратите внимание, что список вложен, поэтому на каждом уровне будет отдельный счетчик, представленный цифрами 1, 2 и 3 _ s.

15
задан user1144616 8 February 2012 в 17:16
поделиться