2014-09-19 43 views
-3

我需要以集合的形式打印列表的元素。所以如果我有列表[1,2,3],那么print语句需要返回{1,2,3}。如何以集合的格式打印列表。在Python3中

+1

待办事项你的意思是你需要让所有的列表看起来像集合,或者只是特别的一个?你试过什么了? – jonrsharpe 2014-09-19 21:13:24

+0

对不起,我应该更清楚。它必须为任何名单做到这一点。 @msngupta得到了我无法想象的。 – Ginjo 2014-09-20 15:40:06

回答

1

s=[1,2,3] 
print("{"+str(s)[1:-1]+"}") 
+0

这对我所需要的很好。对不起,我没有发布我已经做了什么,但我完全失去了如何实现这一点,并没有太多的事情要继续下去。 – Ginjo 2014-09-20 15:39:07

1

这里有一种方法(其中x是你的列表):

>>> print("{" + ', '.join(str(item) for item in x) + "}") 
{1, 2, 3} 
+0

我会用'repr(item)'而不是'str(item)'来完成格式匹配。对整数无关紧要,但对于其他的东西如字符串和浮点数也是如此。编辑:我没有注意到这是Python3,忘记了我所说的有关浮动。尽管如此,仍然是计数字符 – 2014-09-19 21:20:21

1

如果你想具体的格式,你需要编写自己。

这里是set一个子类实现该格式:

class Myset(set): 
    def __str__(self): 
     return '{'+','.join(repr(e) for e in sorted(self))+'}' 

print Myset([1,2,3]) 
# {1,2,3} 

或者,只是使用Python 3倍:

>>> print(set([1,2,3])) 
{1, 2, 3} 

的顺序可能会有所不同,但是,如果没有,我用的sorted以上...

1

如果你想要一套,为什么不把列表变成一个集?随着x是你的清单:

>>> x=[1,2,3] 
>>> x_set=set(x) 
>>> print(x_set) 
{1, 2, 3} 

这是值得注意的是,套不排序,不能包含重复。 (但话又说回来什么是印刷奔头“喜欢”一组的好处,但不是呢?)

>>> x=[1,2,3,3,4] 
>>> x_set=set(x) 
>>> print(x_set) 
{1, 2, 3, 4} 
+0

只要列表中没有重复项,就可以工作,并且您不关心顺序。 – 2014-09-19 21:18:23

+0

是的,可能值得注意的是,套件并未订购。 – Ghanima 2014-09-19 21:19:33

+0

只有在Python3中 - Python 2会打印'set([1,2,3])' – dawg 2014-09-19 21:22:16

0
("{{{}}}".format(",".join(map(str,l)))) 
{1,2,3} 
0

list扩展类并覆盖__repr__方法

class List(list): 
    def __repr__(self): 
     return "{%s}"%(",".join([str(each) for each in self])) 

l = List() 
l.append(1) 
l.append(2) 
print l 

{1,2}