我用
生成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实例,找到元组
我的问题是如何在列中显示置换元素?
答案 0 :(得分:1)
您不能将join
与tuple
参数一起使用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
之前存在做它的工作。