Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python字表置换_Python_Permutation_Permute - Fatal编程技术网

Python字表置换

Python字表置换,python,permutation,permute,Python,Permutation,Permute,如何使此脚本最多排列列表中的3个单词组合 List.txt由4个字符串组成: pass 10 test word 而不是从一个词到四个词的组合,即 output > pass10wordtest, 10testpassword,....etc 我希望最终的组合是: output > testpassword, passtestword, 10wordtest,....etc 我的代码: from itertools import permutations import os

如何使此脚本最多排列列表中的3个单词组合

List.txt由4个字符串组成:

pass
10
test
word
而不是从一个词到四个词的组合,即

output > pass10wordtest, 10testpassword,....etc
我希望最终的组合是:

output > testpassword, passtestword, 10wordtest,....etc
我的代码:

from itertools import permutations
import os

# GET FILE
script_dir = os.path.dirname(os.path.realpath(__file__))
wordlist_rel_path = "List.txt"
wordlist_abs_file_path = os.path.join(script_dir, wordlist_rel_path)

# READ WORD LIST FROM FILE
word_list = []
print ("\ninput file is:", wordlist_abs_file_path,"\n")
with open(wordlist_abs_file_path) as wordlist:
     for line in wordlist:
         word_list.append(line.rstrip())

# PRINT INPUT LIST
print ("input list contains:")
print(word_list,"\n")

# GENERATE POWERSET
powerset_list = []
print ("output list is:")
for n in range(1, len(word_list)+1):
     for perm in permutations(word_list, n):
         powerset_list.append( "".join(perm) )
print(powerset_list)

# WRITE LIST TO FILE
powerset_rel_path = "powerset.txt"
powerset_abs_file_path = os.path.join(script_dir, powerset_rel_path)
powerset_abs_file = open(powerset_abs_file_path, 'w')
for item in powerset_list:
     powerset_abs_file.write("%s\n" % item)
powerset_abs_file.close()
如何从列表中最多排列3个单词组合

该函数支持第二个参数,以便一次仅选择三个输入:

>>> from itertools import permutations
>>> for group in permutations(['pass', '10', 'test', 'word'], 3):
        print(''.join(group))  

pass10test
pass10word
passtest10
passtestword
password10
passwordtest
10passtest
10password
10testpass
10testword
10wordpass
10wordtest
testpass10
testpassword
test10pass
test10word
testwordpass
testword10
wordpass10
wordpasstest
word10pass
word10test
wordtestpass
wordtest10
from itertools import permutations
import os

# GET FILE 
script_dir = os.path.dirname(os.path.realpath(__file__))
wordlist_rel_path = "List.txt"
wordlist_abs_file_path = os.path.join(script_dir, wordlist_rel_path)

# READ WORD LIST FROM FILE
word_list = [] print ("\ninput file is:", wordlist_abs_file_path,"\n")
with open(wordlist_abs_file_path) as wordlist:
     for line in wordlist:
         word_list.append(line.rstrip())

# PRINT INPUT LIST 
print ("input list contains:")
print(word_list,"\n")

# GENERATE POWERSET 
powerset_list = []
print ("output list is:") 
for n in range(1, len(word_list)+1):
     for perm in permutations(word_list,3):
         powerset_list.append( "".join(perm) ) print(powerset_list)

# WRITE LIST TO FILE 
powerset_rel_path = "powerset.txt" 
powerset_abs_file_path = os.path.join(script_dir, powerset_rel_path) 
powerset_abs_file = open(powerset_abs_file_path, 'w') for item in powerset_list:
powerset_abs_file.write("%s\n" % item) powerset_abs_file.close()