在列表中搜索字符串

时间:2016-02-19 19:49:37

标签: python string

我必须创建一个函数,它将整数,字符串和布尔值列表作为输入。然后它将字符串作为一个句子打印出来。到目前为止,这是我的功能:

def sentenceGenerator(a):
    newList = []
    for string in a:
        if string == str
            newList.append(string)
    print(newList)  

这就是我使用它的方式:

sentenceGenerator(["Mulan", "and", 5, "Aladdin", "is", True, "Quality"])

我知道if语句不正确,但我不知道如何搜索。

5 个答案:

答案 0 :(得分:1)

怎么样?
source = ["Mulan", "and", 5, "Aladdin", "is", True, "Quality"]
[word for word in source if isinstance(word, str)]

甚至

' '.join([word for word in source if isinstance(word, str)])

得到一个句子?

答案 1 :(得分:1)

以下部分:

string == str

您正在比较具有str类型的项目,因为==操作会比较string的值,前面的语句将为False

如果要检查对象的类型,可以使用isinstance()内置函数。

作为一种更加pyhtonic的方式,你可以使用列表理解来从列表中获取字符串,并将结果传递给str.join()函数并使用适当的分隔符来连接单词:

>>> ' '.join([item for item in l if isinstance(item, str)])
'Mulan and Aladdin is Quality'

答案 2 :(得分:0)

您可以使用过滤器来查找字符串,然后使用连接来组合它们

def sentenceGenerator(a):
    print ' '.join(filter((lambda x: type(x) is str), a)) 

sentenceGenerator(["Mulan", "and", 5, "Aladdin", "is", True, "Quality"])

Mulan and Aladdin is Quality

答案 3 :(得分:0)

如果您不熟悉lambda,可以使用内置的map函数:

lst = ["Mulan", "and", 5, "Aladdin", "is", True, "Quality"]
str = " ".join(map(str, lst))

答案 4 :(得分:0)

就是这个 -

= 74)' in /home/ec2-user/MPWLaravel/vendor/laravel/framework/src/Illuminate/Database/Connection.php:555