我试图在两个列表中存储一个字符串的元音和常量索引,到目前为止我有以下几个:
def my_function(string):
vowels_index = [] # vowels indices list
const_index = [i if string[i] not in "AEIOU" else vowels_index.append(i) for i in range(len(string))] # constants indices list
CONST_INDEX中存在一些None值:
>>> string = "BANANA"
>>> const_index = [i if string[i] not in "AEIOU" else vowels_index.append(i) for i in range(len(string))]
>>> const_index
[0, None, 2, None, 4, None]
>>>
有没有更好的办法找到这两个名单呢?
您可以首先在列表理解中使用enumerate
过滤出元音出现的索引。 然后,您可以使用集合
与所有索引的差异来查找补语,补语是辅音必须出现的地方。
def my_function(string):
vowels = [idx for idx, val in enumerate(string) if val.lower() in 'aeiou']
consts = list(set(range(len(string))) - set(vowels))
return vowels, consts
>>> my_function('BANANA')
([1, 3, 5], [0, 2, 4])
可以解包以获取单独的列表
>>> vowels, consts = my_function('BANANA')
>>> vowels
[1, 3, 5]
>>> consts
[0, 2, 4]