Проблема с пониманием вашего второго списка заключается в том, что в идеале состояние должно начинаться в конце (после второго цикла for
, только тогда j
мы были бы доступны). Но вам это действительно не нужно, просто проверьте, нет ли x
в списке гласных. Пример -
cons = [(x, i) for i,x in enumerate(list_) if x not in ['A', 'E', 'I', 'O', 'U']]
Demo -
>>> a = "HELLO"
>>> list_ = list(a)
>>> vow = [(x, i) for i,x in enumerate(list_) if x in ['A', 'E', 'I', 'O', 'U']]
>>> cons = [(x, i) for i,x in enumerate(list_) if x not in ['A', 'E', 'I', 'O', 'U']]
>>> vow
[('E', 1), ('O', 4)]
>>> cons
[('H', 0), ('L', 2), ('L', 3)]
Вы можете сделать это немного быстрее, используя set
для vowels
и вы на самом деле не нужно list_
, вы можете перечислить через a
себя, и получить точно такой же результат. Пример -
vowel_set = {'A', 'E', 'I', 'O', 'U'}
vow = [(x, i) for i,x in enumerate(a) if x in vowel_set]
cons = [(x, i) for i,x in enumerate(a) if x not in vowel_set]
Демо -
>>> a = "HELLO"
>>> vowel_set = {'A', 'E', 'I', 'O', 'U'}
>>> vow = [(x, i) for i,x in enumerate(a) if x in vowel_set]
>>> cons = [(x, i) for i,x in enumerate(a) if x not in vowel_set]
>>> vow
[('E', 1), ('O', 4)]
>>> cons
[('H', 0), ('L', 2), ('L', 3)]
Может быть, потому, что вы используете два список понимания сразу , –
Перечисления могут быть вложенными, что-то не так в том, как я это делаю –