我必须创建一个函数,它将整数,字符串和布尔值列表作为输入。然后它将字符串作为一个句子打印出来。到目前为止,这是我的功能:
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语句不正确,但我不知道如何搜索。
答案 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