将列表的每个连音的内容转换为字符串,不带括号或逗号
Posted
技术标签:
【中文标题】将列表的每个连音的内容转换为字符串,不带括号或逗号【英文标题】:Converting the content of each tuplet of a list to a string, without the parenthesis or the commas 【发布时间】:2019-04-06 05:46:35 【问题描述】:我需要对询问的输入进行排列,所以我有这个代码
#!/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)... 问题是我需要为每个连音附加一个字符串,所以我不能将一个连音附加到一个字符串。我需要将列表的每个连音转换为一个字符串,但没有 () 或逗号。
例如,从包含 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,但我对连音符的工作原理一无所知。
编辑:我认为列表应该是字符串(而不是整数)
【问题讨论】:
进行了编辑以澄清我想要的内容,如果不清楚,请见谅 【参考方案1】:对于你想要这种输出风格的情况:
[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】:您可以使用字符串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']
【讨论】:
PO 想要int
的列表,我想,你应该map(int, string_perms)
@GhilasBELHADJ 你从哪里得到的?
我认为它的输入最初也是“123”,所以你可能不需要强制转换到 str【参考方案3】:
a = [(1,2,3),(1,3,2)]
b = [''.join(map(str, s)) for s in a]
print (b)
# ['123', '132']
【讨论】:
以上是关于将列表的每个连音的内容转换为字符串,不带括号或逗号的主要内容,如果未能解决你的问题,请参考以下文章