代码之家  ›  专栏  ›  技术社区  ›  muazfaiz

在Python中多次创建多个项的元组

  •  15
  • muazfaiz  · 技术社区  · 8 年前

    列表可以创建n次:

    a = [['x', 'y']]*3 # Output = [['x', 'y'], ['x', 'y'], ['x', 'y']]
    

    a = (('x','y'))*4 # Output = ('x', 'y', 'x', 'y', 'x', 'y', 'x', 'y')
    Expected_output = (('x', 'y'), ('x', 'y'), ('x', 'y'), ('x', 'y'))
    

    有什么建议吗?谢谢

    1 回复  |  直到 8 年前
        1
  •  28
  •   Moses Koledoye    8 年前

    外圆括号只是分组圆括号。您需要添加一个逗号,使外壳成为元组:

    a = (('x','y'),)*4
    print(a)
    # (('x', 'y'), ('x', 'y'), ('x', 'y'), ('x', 'y'))
    

    对于上下文,在执行以下操作时获取元组是没有意义的 f = (x + y) 例如


    a = (5)  # integer
    a = (5,) # tuple
    a = 5,   # tuple, parens are not compulsory
    

    另一方面,跨嵌套容器复制项需要的不仅仅是简单的mult。活动以您的第一个操作为例:

    >>> a = [['x', 'y']]*3
    >>> # modify first item
    ...
    >>> a[0][0] = 'n'
    >>> a
    [['n', 'y'], ['n', 'y'], ['n', 'y']]
    

    基本上没有第一项-父列表只包含一个跨不同索引复制的列表对象。对于元组来说,这可能不是特别令人担忧的 不变的

    考虑使用更正确的配方:

    >>> a = [['x', 'y'] for _ in range(3)]
    >>> a[0][0] = 'n'
    >>> a
    [['n', 'y'], ['x', 'y'], ['x', 'y']]