簡體   English   中英

如何在不顯示frozenset的情況下顯示集合

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM