将列表中每个连音符的内容转换为字符串,不带括号或逗号

时间:2018-11-01 23:35:06

标签: python

我需要对输入的内容进行排列,所以我有这段代码

#!/usr/bin/python
import itertools

variable1 = raw_input("input 4-6 carac")
var1list = list(variable1)
lenlist = len(var1list)
itertools.permutations(variable1)
iterlist = list(itertools.permutations(variable1, lenlist))
print iterlist

所以我最后得到一个连音符列表 所以对于123我得到(1,2,3),(1,3,2)... 然后的问题是我需要向每个连音符追加一个字符串,因此我无法将tupplet附加到字符串。我需要将列表中的每个连音符转换为字符串,但不包含()或逗号。

例如,从包含123排列的列表中:

  

(1,2,3),(1,3,2)...

我需要得到一个列表,其中包含每个连音符的每个成员在一起,并与列表中其他连音符的成员分开: 我要澄清的是我只想要这个:

  

[123,132 ...]或['123','132'...]

这两个是我在已经回答的帖子中找到的相似示例,只是为了阐明我想要与他们不同的东西

连音符的文字字符串

  

“(1,2,3),(1,3,2)...”

this post

或所有连音符一起格式化为一个列表的列表

  

[1,2,3,1,3,2 ...]

this other post

对此有什么建议吗?我有点控制Python,但是我对tuplet的工作原理一无所知。

编辑:我认为列表应该是字符串(而不是整数)

3 个答案:

答案 0 :(得分:0)

您可以使用字符串join从元组中使用适当的定界符构建字符串:

perms = [(1,2,3), (1,3,2)]
string_perms = [''.join([str(i) for i in t]) for t in perms]
print(string_perms)
# ['123', '132']

答案 1 :(得分:0)

对于需要这种输出样式的情况:

  

[123,132 ...]

尝试以下操作:

b = [''.join(map(str,i)) for i in a]
# ['123', '132']

其中a是排列列表。将joins作为字符串的元组,并创建结果列表。

对于要以这种样式输出的情况:

  

[1,2,3,1,3,2 ...]

import numpy as np
b = np.array(a)
b = map(str, b.reshape(-1).tolist())
# ['1', '2', '3', '1', '3', '2']

这使用numpy数组函数很好地平整了您的条目。

答案 2 :(得分:-1)

a = [(1,2,3),(1,3,2)]
b = [''.join(map(str, s)) for s in a]

print (b)
# ['123', '132']