在python中显示一列中n元素的排列的方法

时间:2014-10-17 07:56:51

标签: python permutation

我用

生成3元素的排列
import itertools
a = list(itertools.permutations(['a','b','c',],3))

并收到以下输出:

  

[(' a',' b',' c'),(' a',' c' ;' b'),(' b',' a'' c'),' b' ,' c','),(' c',' a'' b'),( ' c',' b',' a')]

我想让元素显示在垂直行中,没有括号,逗号和引号:

abc
acb
bac
...

我尝试使用连接功能

b=''.join(a) 

但我收到错误

  

TypeError:序列项0:预期的str实例,找到元组

我的问题是如何在列中显示置换元素?

4 个答案:

答案 0 :(得分:1)

您不能将jointuple参数一起使用str参数,因此您可以使用列表推导来保存在列表中:

>>> b=[''.join(i) for i in a]
>>> b
['abc', 'acb', 'bac', 'bca', 'cab', 'cba']
>>> for i in b :
...  print i
... 
abc
acb
bac
bca
cab
cba

但如果您只想打印,请执行以下操作:

>>> for i in a :
...  print ''.join(i)
... 
abc
acb
bac
bca
cab
cba 

答案 1 :(得分:1)

您收到错误,因为a中的每个元素都是元组。为每个元组调用''.join(),如:

for item in a:
    print(''.join(item)) 

答案 2 :(得分:0)

array = [('a', 'b', 'c'), ('a', 'c', 'b'), ('b', 'a', 'c'), ('b', 'c', 'a'), ('c', 'a', 'b'), ('c', 'b', 'a')]

for x in [''.join(x) for x in array]: print x

答案 3 :(得分:0)

print '\n'.join([''.join(t) for t in itertools.permutations('abc', 3)])

可以使用生成器而不是列表推导(即摆脱方括号),但没有意义,因为所有字符串都需要在'\n'.join之前存在做它的工作。