Python 将itertools.permutations的输出从元组列表转换为字符串列表
在使用itertools置换函数后,列表出现一些问题Python 将itertools.permutations的输出从元组列表转换为字符串列表,python,string,list,tuples,permutation,Python,String,List,Tuples,Permutation,在使用itertools置换函数后,列表出现一些问题 from itertools import permutations def longestWord(letters): combinations = list(permutations(letters)) for s in combinations: ''.join(s) print(combinations) longestWord("aah") 输出如下所示: [('a', 'a', '
from itertools import permutations
def longestWord(letters):
combinations = list(permutations(letters))
for s in combinations:
''.join(s)
print(combinations)
longestWord("aah")
输出如下所示:
[('a', 'a', 'h'), ('a', 'h', 'a'), ('a', 'a', 'h'), ('a', 'h', 'a'),
('h', 'a', 'a'), ('h', 'a', 'a')]
我希望这是一个简单的列表,但它似乎是一个元组列表(?)。有人能帮我把它格式化成以下格式吗
['aah', 'aha', 'aah', 'aha', 'haa', 'haa']
置换返回一个迭代器,生成元组,因此需要将它们连接起来。映射是一种很好的方法,可以代替for循环
from itertools import permutations
def longestWord(letters):
combinations = list(map("".join, permutations(letters)))
print(combinations)
longestWord("aah")
按照您的操作方式,您将每个元组中的字母连接到一个字符串中,但没有更改组合列表。请尝试以下操作:
combinations = permutations(letters)
print [''.join(x) for x in combinations]
(您的join
实际上没有做任何有用的事情——在执行了join之后,它的返回值没有保存。)
结果:
['aah', 'aha', 'aah', 'aha', 'haa', 'haa']
一些建议:
组合的命名不好,因为组合不同于置换
[''.join(h) for h in [list(k) for k in longestWord("aah")]]
这里的
列表
什么都买不到是的,从OP中复制了这一行作为上下文。调用排列组合
会让人困惑。
[''.join(h) for h in [list(k) for k in longestWord("aah")]]