[英]How to go through list looking whether first letter in each string is upper case? (Python)
我正在尝试制作一个函数,以便它可以检查列表中每个字符串中的第一个字母是否为大写。
def capital(str_list):
for n in str_list:
if n[0].isupper():
return True
else:
return False
如果我有一个列表,它只是检查第一个单词。 如何检查列表中每个单词的首字母是否大写?
[s.istitle() for s in str_list]
要么
[s[0].isupper() for s in str_list]
当您偶然发现一个非大写字母时,立即返回False
并且仅在检查了每个元素之后才返回True
:
def capital(str_list):
for n in str_list:
if not n[0].isupper():
return False
return True
您还可以考虑使用all
的更紧凑的解决方案:
def capital(str_list): return all(i[0].isupper() for i in str_list)
如果您发现一个单词不是以大写开头,那么您需要返回False
,而不是返回True
。 完成循环后,只需返回True
因为现在您的所有单词都以大写字母开头。
def capital(str_list):
for n in str_list:
if not n[0].isupper():
return False
return True
更多pythonic方式:
def capital(str_list):
return all(n[0].isupper() for n in str_list)
您可能会发现python的内置any()
和all()
函数很有用: https : //docs.python.org/3/library/functions.html#all
def capital(str_list):
return all(n[0].isupper() for n in str_list)
正如我在对您的问题的评论中提到的那样,您的函数仅检查列表中第一个单词的原因是由于return
语句,即。 一旦函数执行了它的return
语句,函数的执行就结束了。
完成您要完成的任务的另一种方法是通过map
和lambda
函数,可以很容易地对其进行自定义,以防您以后要执行其他操作。
str_list = ['Apple', 'berry', 'Watermelon', 'Bananas']
def capital(str_list):
return list(map(lambda x: x[0].isupper(), str_list))
capital(str_list)
产量
[True, False, True, True]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.