我有一个包含一些单词的列表。我想过滤掉包含“:”的单词。 如何编写代码将它们与其他单词分开?
答案 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']
filter
函数: words_with_colons = list(filter(lambda word: ':' in word, list_of_words))
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))