2016-02-19 97 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)