使用Python在列表中查找包含“:”的单词

时间:2018-08-18 08:59:26

标签: python list list-comprehension

我有一个包含一些单词的列表。我想过滤掉包含“:”的单词。 如何编写代码将它们与其他单词分开?

3 个答案:

答案 0 :(得分:0)

我会使用列表理解。这样可以根据是否通过if语句来过滤列表中的所有元素。

代码:

my_list = ["Apples","Bananas","Colons:","CSI:NY","Egbert"]
with_colons = [a for a in my_list if ":" in a]
without_colons = [a for a in my_list if ":" not in a]
print(with_colons)
print(without_colons)

输出:

['Colons:', 'CSI:NY']
['Apples', 'Bananas', 'Egbert']

答案 1 :(得分:0)

要过滤此单词列表,有两种可能性:

list_of_words = ['word_without_colon', 'word:with:colon']
  1. filter函数:

words_with_colons = list(filter(lambda word: ':' in word, list_of_words))

  1. 列表理解:

words_with_colons = [word for word in list_of_words if ':' in word]

Python的创建者Guido van Rossum建议使用列表推导,甚至使用planned to remove the filter-function completely in Python 3

  

我认为删除filter()map()毫无争议; filter(P, S)几乎总是写成[x for x in S if P(x)],这具有巨大的优势,即最常见的用法是谓词,它们是比较,例如x==42,并且为此定义一个lambda只会使读者付出更多的努力(加上lambda比列表理解要慢)。对于map(F, S)(变成[F(x) for x in S])来说更是如此。

答案 2 :(得分:-1)

使用filter()

a = ['hello', 'foo:bar', 'baz']
b = list(filter(lambda x: ':' not in x, a))