Python 将itertools.permutations的输出从元组列表转换为字符串列表

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', '

在使用itertools置换函数后,列表出现一些问题

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")]]