Я хочу создать два списка listOfA
и listOfB
для хранения индексов A
и B
из другого списка.Понимание списков Python для создания нескольких списков
s=['A','B','A','A','A','B','B']
Вывод должен быть два списка
listOfA=[0,2,3,4]
listOfB=[1,5,6]
Я могу сделать это с помощью двух операторов.
listOfA=[idx for idx,x in enumerate(s) if x=='A']
listOfB=[idx for idx,x in enumerate(s) if x=='B']
Однако, я хочу сделать это только в одной итерации, используя только списки. Можно ли сделать это в одном заявлении? что-то вроде listOfA,listOfB=[--code goes here--]
Почему? Вас беспокоит сложность 2 * N? O (2N) ≈ O (N). Я бы серьезно подумал о том, чтобы использовать только два генератора, которые написаны почти так же, как и ваши списки. – kojiro
@kojiro: Никакая сложность здесь не проблема, я просто хочу изучить возможности python. – Heisenberg
Возможный дубликат [Python: разбиение списка на основе условия?] (Http://stackoverflow.com/questions/949098/python-split-a-list-based-on-a-condition) –