Python 在列表中搜索字母
我对编码非常陌生,目前正在学习一门在线课程。使用CodeHS沙盒来制作程序,但在这方面有点困难。我正试图让我的程序浏览这个名字列表,并返回其中有字母“E”/“E”的名字。我还想让它记录找到的名字数量,并最终返回该数量。感谢您的帮助,提前谢谢。以下是我目前的代码:Python 在列表中搜索字母,python,list,search,letters,Python,List,Search,Letters,我对编码非常陌生,目前正在学习一门在线课程。使用CodeHS沙盒来制作程序,但在这方面有点困难。我正试图让我的程序浏览这个名字列表,并返回其中有字母“E”/“E”的名字。我还想让它记录找到的名字数量,并最终返回该数量。感谢您的帮助,提前谢谢。以下是我目前的代码: middle_names = ["Michael", "Abdallah", "Parvati", "Sanskriti", "Piper", "Samuel", "Lee", "Meg", "Michael", "Mohamed",
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”)
如果不区分大小写:)啊,列表理解非常简单,谢谢大家的帮助!成功了!!