在列表中搜索字母

时间:2018-07-15 13:47:12

标签: python list search letters

我对编码非常陌生,目前正在参加在线课程。使用CodeHS沙箱制作程序,与此同时有些困难。我试图使我的程序通过此名称列表查找并返回其中带有字母“ E” /“ e”的名称。我还希望它保留正在查找的名称的数量,并最终返回该数量。任何帮助表示赞赏,在此先感谢。到目前为止,这是我的代码:

middle_names = ["Michael", "Abdallah", "Parvati", "Sanskriti", "Piper", "Samuel", "Lee", "Meg", "Michael", "Mohamed", "Sofia", "Ahmed Hani", "Josh", "Lawrence", "Mireya", "Mingyue", "Bradley Theodore", "McKenna", "Ali"]


def search():
    if "e" in middle_names:
        print middle_names

search()

3 个答案:

答案 0 :(得分:2)

使用python的sweet list comprehension,它将返回一个列表,其中包含所有带有“ e”的名称,例如-

middle_name_contains_e = [i for i in middle_names if 'e' in i]

,并在评论中指出,只需将“ e”替换为“ E”以匹配大写字母-

middle_name_contains_e = [i for i in middle_names if 'E' in i]

或者您可以像这样手动遍历列表中的所有名称-

def middle_name_contains_e():
    names = []
    for name in middle_names:
        if "e" in name:
            names.append(name)
    return names
names = middle_name_contains_e()

答案 1 :(得分:0)

循环逼近

您需要循环浏览列表中的每个项目。通常通过for循环来实现:

def search(lst, k):
    for item in lst:
        if 'e' in item:
            print(item)

search(middle_names, 'e')

可以改善这种算法的几种方法是考虑小写或大写字母,例如通过str.casefold,并使用returnyield语句使函数给出输出。这是使用生成器的示例:

def search(lst, k):
    for item in lst:
        if 'e' in item.casefold():
            yield item

for res in search(middle_names, 'e'):
    print(res)

理解

一种Pythonic高效的方法是使用列表理解:

res = [item for item in middle_names if 'e' in item.casefold()]
print(res)

或者,如果您想采用一种懒惰的方法,则可以使用生成器理解:

res = (item for item in middle_names if 'e' in item.casefold())
print(*res, sep='\n')

答案 2 :(得分:0)

您还可以执行以下操作以在一个函数中使用e计算计数和字母:

def search(x):
    e_list = []
    for i in x:
        if 'e' in i:
            e_list.append(i)
    return len(e_list), e_list

count,e_list = search(middle_names)
# count = 13
# e_list = ['Michael', 'Piper', 'Samuel', 'Lee', 'Meg', 'Michael', 'Mohamed', 'Ahmed Hani', 'Lawrence', 'Mireya', 'Mingyue', 'Bradley Theodore', 'McKenna']