【问题标题】:How to print a list in the format of a set. In Python3如何以集合的格式打印列表。在 Python3 中
【发布时间】:2014-09-19 21:09:55
【问题描述】:

我需要以集合的形式打印列表的元素。因此,如果我有列表 [1,2,3],则打印语句需要返回 {1,2,3}。

【问题讨论】:

  • 您的意思是您需要使所有列表看起来像集合,还是只需要一个?到目前为止,您尝试过什么?
  • 对不起,我应该更清楚。对于任何列表,它都必须这样做。 @msngupta 得到了我想不通的东西。

标签: python list python-3.x printing set


【解决方案1】:

在这里

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

【讨论】:

  • 这非常适合我的需要。很抱歉没有发布我已经发布的内容,但我完全不知道如何实现这一点,并且没有太多工作要做。
【解决方案2】:

这是一种方法(x 是您的列表):

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

【讨论】:

  • 我会使用repr(item) 而不是str(item) 来使格式完全匹配。这对整数无关紧要,但对于字符串和浮点数等其他事物则很重要。编辑:我没有注意到这是 Python3,忘记了我所说的浮点数。尽管如此,字符串仍然很重要。
【解决方案3】:

如果你想要一个集合,为什么不把列表变成一个集合呢? 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}

【讨论】:

  • 只要列表中没有重复项,并且您不关心顺序,它就可以工作。
  • 是的,值得注意的是套装没有排序。
  • 仅在 Python3 中 -- Python 2 将打印 set([1, 2, 3])
  • 但是问题的标题是“Python 3”。我的回答也暗示了 Python 3 的语法。
【解决方案4】:

如果您需要特定格式,则需要自己编写。

这是实现该格式的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 3x:

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

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

【讨论】:

    【解决方案5】:
    ("{{{}}}".format(",".join(map(str,l))))
    {1,2,3}
    

    【讨论】:

      【解决方案6】:

      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}
      

      【讨论】:

        猜你喜欢
        • 2021-03-04
        • 2020-08-05
        • 1970-01-01
        • 2020-09-26
        • 1970-01-01
        • 2019-10-28
        • 2016-01-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多