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

Aug*_*ams 0 python python-3.x

我有一个列表,如:

myList = [1, 0, 0, 0, 1, 2]
Run Code Online (Sandbox Code Playgroud)

我想打印这个集合列表符号:

{1, 0, 0, 0, 1, 2}
Run Code Online (Sandbox Code Playgroud)

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

>>> set(mylist)
{0, 1, 2}
Run Code Online (Sandbox Code Playgroud)

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

mgi*_*son 7

看起来像简单的字符串操作会起作用:

list_str = str(mylist).replace('[', '{').replace(']', '}')
Run Code Online (Sandbox Code Playgroud)

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

list_str = '{%s}' % (str(mylist)[1:-1])
Run Code Online (Sandbox Code Playgroud)

这更好的原因是它没有机会混淆列表的内容(如果你的列表包含可能包含或不包含'['字符的字符串,可以想象使用前面的代码).

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

list_str = '{%s}' % (', '.join(repr(item) for item in mylist))
list_str = '{%s}' % (', '.join(map(repr, mylist)))
Run Code Online (Sandbox Code Playgroud)