如何将列表打印为一组,但不删除重复项?

时间:2017-05-10 16:08:32

标签: python python-3.x

我有一个列表,例如:

myList = [1, 0, 0, 0, 1, 2]

我想将其打印为设置列表符号:

{1, 0, 0, 0, 1, 2}

但是,当我尝试将其作为一组打印时,将删除重复项:

>>> set(mylist)
{0, 1, 2}

我不希望删除重复项。如何使用set语法进行打印,但不删除任何重复项?

1 个答案:

答案 0 :(得分:7)

似乎简单的字符串操作就可以了:

list_str = str(mylist).replace('[', '{').replace(']', '}')

或者,或许甚至更好,我们可以切掉列表格式化字符串的第一个和最后一个字符,并用你想要的新大括号替换它们:

list_str = '{%s}' % (str(mylist)[1:-1])

这是明显的原因,因为它没有机会混淆列表的内容(如果你的列表包含可能有或没有'['的字符串,可以想象使用前面的代码嵌入其中的字符)。

如果仍然不适合你,你可以通过多种方式自己格式化整个字符串(通常包括获取每个项目的字符串表示并用逗号和空格连接它们)。

list_str = '{%s}' % (', '.join(repr(item) for item in mylist))
list_str = '{%s}' % (', '.join(map(repr, mylist)))