Searching for strings in list
本问题已经有最佳答案,请猛点这里访问。
我必须创建一个函数,它将整数、字符串和布尔值的列表作为输入。然后,它把这些字符串打印成一个句子。这是我目前的职责:
1 2 3 4 5 6 | def sentenceGenerator(a): newList = [] for string in a: if string == str newList.append(string) print(newList) |
我就是这样使用它的:
1 | sentenceGenerator(["Mulan","and", 5,"Aladdin","is", True,"Quality"]) |
我知道if语句不正确,但我不知道如何搜索。
以下部分:
1 | string == str |
您正在将一个项目与
如果要检查对象的类型,可以使用
作为一种更为简洁的方法,您可以使用列表理解从列表中获取字符串,并使用适当的分隔符将结果传递给
1 2 | >>> ' '.join([item for item in l if isinstance(item, str)]) 'Mulan and Aladdin is Quality' |
怎么样
1 2 | source = ["Mulan","and", 5,"Aladdin","is", True,"Quality"] [word for word in source if isinstance(word, str)] |
甚至
1 | ' '.join([word for word in source if isinstance(word, str)]) |
得到一个句子?
就这样——
1 2 3 4 5 6 | def sentenceGenerator(a): newList = [] for string in a: if isinstance(string, str) or isinstance(string, unicode): newList.append(string) print(newList) |
如果您不熟悉lambda,可以使用内置的map函数:
1 2 | lst = ["Mulan","and", 5,"Aladdin","is", True,"Quality"] str ="".join(map(str, lst)) |
您可以使用filter来查找字符串,然后使用join来像这样组合它们。
1 2 3 4 5 6 | 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 |