如何在Python中筛选列表中的项?

2024-03-28 09:37:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我从包依赖关系列表中天真地收集了数据。

取决于:foo bar baz>;=5.2

我的结局是

 d = set(['foo','bar','baz','>=','5.2'])

我不想要数字和操作数。

在Perl中,我会

@new = grep {/^[a-z]+$/} @old

但是我找不到方法,比如pass remove()一个lambda,或者什么的。

我最亲近的人是丑陋的:

[ item != None for item in [ re.search("^[a-zA-Z]+$",atom)   for atom in d] ]

如果集合的顺序是可重复的,那么这将得到我想要的集合中哪些值的映射…?我知道Perl哈希中不是这样的。

我知道如何迭代。:)我试着用Python的方式来做


Tags: 数据ingt列表forfoo关系bar
2条回答

怎么样

d = set([item for item in d if re.match("^[a-zA-Z]+$",item)])

这就给了你想要的值,回到d中(顺序可能不同,但这是你使用集合所付出的代价)。

这里不需要正则表达式。使用^{}。有无清单理解:

my_list = ['foo','bar','baz','>=','5.2']

# With
only_words = [token for token in my_list if token.isalpha()]

# Without
only_words = filter(str.isalpha, my_list)

就我个人而言,我认为您不必对Python中的所有内容都使用列表理解,但是当我建议回答mapfilter时,我总是皱着眉头。

相关问题 更多 >