2014-09-29 206 views
0

目前開始,我有這樣的:打印字符串以特定字符

lst = ['Eleanor', 'Sammy', 'Owen', 'Gavin'] 

def partition(lst): 
    if any('abcdefghijklm') in ([x[0] for x in lst]): 
     print(lst) 
    else: 
     print('This still isn\'t working') 

我試圖檢查LST每個字符串的第一個字符,只打印在LST與啓動串任何信件AM。我似乎無法找到任何支持此方法的方法。有沒有我忽略的本地方法?

+0

迭代通過列表('for'循環),並檢查'A <=項[0] .upper()然後打印<= M'。 – isedev 2014-09-29 23:32:30

回答

1
lst = ['Eleanor', 'Sammy', 'Owen', 'Gavin'] 
whitelist = set('abcdefghijklm') 
for name in lst: 
    if name[0].lower() in whitelist: 
     print(name) 
0

怎麼樣簡單明瞭:

def partition(lst): 
    print([ x for x in lst if x[0].lower() in 'abcdefghijklm' ]) 

或者怎麼樣的很清楚:

def partition(lst): 
    for word in lst: 
     if word[0] in 'abcdefghijklm': 
      print(word) 
1

你誤會什麼any一樣。如果迭代器中的任何成員爲True,則它將返回True:print(any([False, [], 0, None, 'a'])) #outputs True相反,all只返回True,如果傳遞給它的迭代器的成員爲True。

它是一種強大的工具,然而,可以使用用於此任務:

from string import ascii_lowercase as lowercase #a-z 

def partition(*names): 
    if any(n[0].lower() in lowercase[:13] for n in names): 
     print(*names) 
    else: 
     print("No names matched the criteria") 

partition('Eleanor', 'Sammy', 'Owen', 'Gavin')