Python 在列表中搜索字母

Python 在列表中搜索字母,python,list,search,letters,Python,List,Search,Letters,我对编码非常陌生,目前正在学习一门在线课程。使用CodeHS沙盒来制作程序,但在这方面有点困难。我正试图让我的程序浏览这个名字列表,并返回其中有字母“E”/“E”的名字。我还想让它记录找到的名字数量,并最终返回该数量。感谢您的帮助,提前谢谢。以下是我目前的代码: middle_names = ["Michael", "Abdallah", "Parvati", "Sanskriti", "Piper", "Samuel", "Lee", "Meg", "Michael", "Mohamed",

我对编码非常陌生,目前正在学习一门在线课程。使用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()
循环法 您需要循环浏览列表中的每个项目。这通常通过
for
循环实现:

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

search(middle_names, 'e')
改进这种算法的两种方法是计算小写或大写字母,例如通过
str.casefold
,并使用
return
yield
语句让函数给出输出。下面是一个使用生成器的示例:

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

for res in search(middle_names, 'e'):
    print(res)
理解 一种简单有效的方法是使用列表理解:

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')
或者,如果您想采用惰性方法,可以使用生成器:

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')

使用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()
或者你可以像这样手动循环列表中的所有名字-

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()

您也可以在一个函数中使用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']

为什么我们需要一个单独的柜台?列表长度
len(e_List)
应该足够了吗?并调整为
[i为中间的i(如果i中的“e”或i中的“e”)
如果不区分大小写:)啊,列表理解非常简单,谢谢大家的帮助!成功了!!