在列表中查找字符串

时间:2015-06-15 23:56:59

标签: python string list

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

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

这是有效的,但我不知道列表会有多长时间,所以我基本上必须为列表中的每个项目执行此操作,这不会有多大意义。还有另一种方法吗? 我可以制作一种循环吗?

谢谢

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!"