2016-02-19 102 views
0

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

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

这是我如何使用它:

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

我知道如果说法是不正确的,但我不知道怎么回事进行搜索。

+1

只是用'是类型(字符串)== str' – malhar

+0

你觉得这样做:'如果字符串== str'? –

+0

哈哈我不知道我是新人,不知道是什么。 – Trea704

回答

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

在以下部分:

string == str 

您与str类型比较的项目,因为==操作将比较string的值前面的声明将是False

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

而且,你可以使用列表理解来获得字符串形式的列表,并以加盟的话,结果以适当的分隔符传给str.join()功能更pyhtonic方式:

>>> ' '.join([item for item in l if isinstance(item, str)]) 
'Mulan and Aladdin is Quality' 
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 
0

结合内置的地图功能:

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

只是这一点 -

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