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

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

【讨论】:

以上是关于将列表的每个连音的内容转换为字符串,不带括号或逗号的主要内容,如果未能解决你的问题,请参考以下文章

在元组中打印元素,不带逗号,引号和括号

如何将逗号分隔的字符串转换为列表?

以逗号分隔的字符串查找目录列表,不带尾随逗号

将带括号的条件转换为不带括号的等价条件

将以逗号分隔格式保存的数据转换为不带包的固定宽度格式

打印不带括号和逗号的数组