文件排列

2024-10-02 20:40:11 发布

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

我有50个文件在一个目录中,我想执行一个排列,得到所有可能的组合在一组25。如果你想看到一个小例子,使用组od 3,它应该是这样的:

file1 file2 file3
file1 file2 file4
file1 file2 file5
...
file50 file48 file49

为此,我使用R方法:

^{2}$

这种方法非常缓慢。你知道使用awkbashpythonperl的更快的替代品吗?在


Tags: 文件方法目录bashfile1例子file2awk
2条回答

perl faq

use Algorithm::Permute;
my @array = 'a'..'d';
my $p_iterator = Algorithm::Permute->new ( \@array );
while (my @perm = $p_iterator->next) {
   print "next permutation: (@perm)\n";
}

这将生成一个列表的每一个排列,尽管有50个元素,但这将是相当多的。在

我不确定是否有一个方便的方法来选择和过滤子列表。我最初的想法是保留一份“看到”的名单。我将开始考虑在散列中维护一个“seen”列表,并跳过重复项,但是您必须生成完整的置换列表才能做到这一点。在

或者有combine

^{pr2}$

3路组合是:19000奇数。 4 is:230300 5是:

不知道25是什么-我没准备好运行它!在

但请注意,这是一个大手术,所以无论你做什么都需要一段时间。在

使用Python可以使用combinations函数,如下所示:

from itertools import combinations
import os

for combo in combinations(os.listdir('.'), 25):
    print combo

相关问题 更多 >