我对编码非常陌生,目前正在参加在线课程。使用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()
答案 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
,并使用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)
一种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']