Python中的itertools lambda /最好的LINQ方法

时间:2012-10-18 20:09:02

标签: python itertools

我对python很新,但我在C#方面有一些经验。我喜欢的一件事是你使用Linq-Framework获得的一套工具。 因此我在Python中搜索一些等价物,因为它似乎有一些尝试。除了pynq,我只是没有开始工作而且似乎已经死了,我发现itertools有一些选择可以进入这个方向。 但我仍然有问题让它工作。 我想要的是一个目录中不是目录的条目列表。 是的,我相信有很多其他的,可行的更好的方法来做到这一点,但我想用itertools解决这个问题,因为类似的问题也可能出现在其他地方。

import os, itertools

listing = os.listdir(".")
filteredfiles = itertools.ifilterfalse(lambda dirContent: os.path.isdir(dirContent), listing)
for f in filteredfiles:
    print "found file: " + f

这为我提供了目录的完整内容的输出。 如果我用ifilter替换ifilterfalse,我会得到一个空列表。

我可以猜测它只是不能处理对os.path.isdir(...)的复杂调用,但我不确定。

任何人都可以给我一个答案吗?基本上,正如我上面所说,我只想要一些类似Linq的可能性来过滤Iterables。我不喜欢循环。他们让我头晕目眩。 ; - )

1 个答案:

答案 0 :(得分:1)

您需要在检查之前创建完整路径名:

os.path.isdir(os.path.join(path, dirContent))