[英]how can I display set of sets without showing frozenset
我試圖通過使用frozenset創建一組集合,但我想知道是否可以顯示
{{1,2}}
代替
{frozenset({1,2})}
輸入
t = [[], [1, 2], [5], [1, 2, 5], [1, 2, 3, 4], [1, 2, 3, 6]]
t1 = set(frozenset(i) for i in t)
print(t1)
輸出
{frozenset({1, 2}), frozenset({1, 2, 5}), frozenset({1, 2, 3, 4}), frozenset(), frozenset({1, 2, 3, 6}), frozenset({5})}
您可以定義從frozenset
繼承的類,例如:
class myFrozen(frozenset):
def __repr__(self):
return set(self).__repr__()
def __str__(self):
return set(self).__str__()
t = [[], [1, 2], [5], [1, 2, 5], [1, 2, 3, 4], [1, 2, 3, 6]]
t1 = set(myFrozen(i) for i in t)
print(t1)
輸出:
{{1, 2}, {1, 2, 5}, {1, 2, 3, 4}, set(), {1, 2, 3, 6}, {5}}
請注意,在此示例中,對於__repr__()
和__str__()
函數,我僅使用set
類中的默認函數。 如果您不想為空集顯示set()
,您可以更改函數以進行打印。 例如:
class myFrozen(frozenset):
def __repr__(self):
return '{' + ",".join(str(x) for x in self) + '}'
def __str__(self):
return self.__repr__()
t = [[], [1, 2], [5], [1, 2, 5], [1, 2, 3, 4], [1, 2, 3, 6]]
t1 = set(myFrozen(i) for i in t)
print(t1)
# {{1,2}, {1,2,5}, {1,2,3,4}, {}, {1,2,3,6}, {5}}
如果您需要的只是不那么冗長的輸出,我只會使用快速列表理解。
print([set(s) for s in t])
# Output: [{1, 2}, {1, 2, 5}, {1, 2, 3, 4}, set(), {1, 2, 3, 6}, {5}]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.