2015-06-15 86 views
0

我需要编写一个代码来返回列表中找到的所有字符串,但我不知道是否有函数。 代码应该返回是这样的:查找列表中的字符串

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

和工作原理,但我不知道名单有多长,所以我就基本都为列表中的每个项目执行此操作,但这不会很有意义。有没有另一种方法来做到这一点? 可以让我来做一个循环吗?

谢谢

+1

应的例子包括结果''henry''? – TigerhawkT3

+0

@ TigerhawkT3从他的例子中,他没有把它包含在他想要的输出中。 – Zizouz212

+0

啊,真的。现在在输出中多余的空间和缺少的'!'怎么样? – TigerhawkT3

回答

0

是的,你会想要一个循环。你可以这样做:

def findStrings(a): 
    return [x for x in a if isinstance(x, str)] 

这将使用列表理解返回所有字符串实例中一气呵成。这将返回一个列表,这样你就可以用打印结果:

for x in findStrings(a): 
    print(x) 
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!" 
相关问题