在lis中查找字符串

2024-09-26 22:55:16 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

这是可行的,但我不知道这个列表会有多长,所以我基本上必须对列表中的每一项都这样做,这没有多大意义。还有别的办法吗? 我能做个循环吗

谢谢


Tags: 函数字符串代码false内容列表returnif
2条回答

本质上,只需使用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!"

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

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

它使用列表理解一次性返回所有字符串实例。这将返回一个列表,因此您可以使用以下内容打印结果:

for x in findStrings(a):
    print(x)

相关问题 更多 >

    热门问题