2014-09-19 80 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}