我试图将一个字符串的元音和常量索引存储在两个列表中,目前我有以下情况。
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
在列表理解中过滤出元音出现的索引。然后您可以使用 set
与所有指数的差异,以找到补码,即辅音必须出现的地方。
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]