Skip to main content
 首页 » 编程设计

python 检查列表元素的存在

2025年05月04日13me-sa

我正在尝试解决类似于以下内容的更通用的问题。在下文中,我得到 vow_array,它指示某些文本中存在元音子集,例如,发送到我的程序。我需要将每个元音的存在打印为 0 或 1。

ch_a = 0 
ch_e = 0 
ch_i = 0 
ch_o = 0 
ch_u = 0 
 
# vow_array is generated at runtime; here is an example 
vow_array = ['a', 'o', 'u'] 
 
if 'a' in vow_array: 
    ch_a = ch_a + 1 
if 'e' in vow_array: 
    ch_e = ch_e + 1 
if 'i' in vow_array: 
    ch_i = ch_i + 1 
if 'o' in vow_array: 
    ch_o = ch_o + 1 
if 'u' in vow_array: 
    ch_u = ch_u + 1 
 
print ch_a, ch_e, ch_i, ch_o, ch_u 

我觉得这段代码太长了,容易出错。有没有更紧凑的写法?另外,假设我必须对字母表中的所有“字母”执行此操作,我不想重复代码。

请您参考如下方法:

当然。

如果您曾经有过具有相同前缀的变量(ch_a、ch_e、...),您需要使用字典或列表来对它们进行分组:

vowels = { 
    'a': 0, 
    'e': 0, 
    'i': 0, 
    'o': 0, 
    'u': 0 
} 
 
vowel_array = ['a', 'o', 'u'] 
 
for vowel in vowels.keys(): 
    if vowel in vowel_array: 
        vowels[vowel] += 1 
 
print vowels 

一个更 Pythonic 的解决方案是这样的:

>>> from collections import Counter 
>>> 
>>> letters = 'i am a sentence' 
>>> Counter(letters) 
Counter({' ': 3, 'e': 3, 'a': 2, 'n': 2, 'c': 1, 'i': 1, 'm': 1, 's': 1, 't': 1})