我需要编写一个代码来返回列表中找到的所有字符串,但我不知道是否有函数。 代码应返回如下内容:
>>>findStrings([3,'Good',['henry',7], " ", False, "Morning!", 9])
"Good Morning"
到目前为止我有这个
def findStrings(a):
if (type(a[0])==str):
return(a[0])
if type(a[1])==str:
return(a[1])
if type(a[2])==str:
return(l[2])
这是有效的,但我不知道列表会有多长时间,所以我基本上必须为列表中的每个项目执行此操作,这不会有多大意义。还有另一种方法吗? 我可以制作一种循环吗?
谢谢
答案 0 :(得分:0)
是的,你想做一个循环。您可以执行以下操作:
def findStrings(a):
return [x for x in a if isinstance(x, str)]
这使用 list comprehension 一次性返回所有字符串实例。这将返回一个列表,因此您可以使用以下命令打印结果:
for x in findStrings(a):
print(x)
答案 1 :(得分:0)
实质上,只需使用for
循环遍历每个元素。使用isinstance
:
def find_strings(l):
strings = []
for i in l:
if isinstance(i, str):
strings.append(i)
return strings # returns ['Good', 'Morning!']
如果你想在最后连接(创建一个字符串而不是列表):
def find_strings(l):
strings = ""
for i in l:
if isinstance(i, str):
strings += i
return strings # returns "Good Morning!"