【问题标题】:How to create tuple with a loop in python如何在python中使用循环创建元组
【发布时间】:2018-07-27 23:44:26
【问题描述】:

我想创建这个元组:

a=(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5),(6,6,6),(7,7,7),(8,8,8),(9,9,9)

我试过了

a=1,1,1
for i in range (2,10):
    a=a,(i,i,i)

但是它在每次迭代中在其他元组中创建一个元组。

谢谢

【问题讨论】:

  • 如果此循环对性能至关重要,您应该将.append 放入列表中,然后在最后使用tuple(a)
  • @juanpa.arrivillaga。或者更好的是,一个双端队列

标签: python for-loop tuples


【解决方案1】:

在你的元组中使用一个额外的逗号,然后加入:

a = ((1,1,1),)
for i in range(2,10):
    a = a + ((i,i,i),)

编辑:改编 juanpa.arrivillaga 的评论,如果你想坚持循环,这是正确的解决方案:

a = [(1,1,1)]
for i in range (2,10):
    a.append((i,i,i))
a = tuple(a)   

【讨论】:

  • 它会起作用,但似乎是一种糟糕的方法。
  • 第一种情况可以从空元组开始,范围从 1 开始
  • 谢谢你,我确实不想要我发布的元组,我需要的是在一个元组中附加一个数组的 x,y,z 弦(Nx3),像这样((x1,y1,z1),(x2,y2,z2)....(xn,yn,zn)) 所以,你的脚本,它有很大帮助。
【解决方案2】:

在这种情况下,您可以创建它而无需使用循环。

a = tuple((i,)*3 for i in range(1, 10))

【讨论】:

    【解决方案3】:

    itertools.repeat也可以在这里使用:

    >>> from itertools import repeat
    >>> [tuple(repeat(i, 3)) for i in range(1, 10)]
    [(1, 1, 1), (2, 2, 2), (3, 3, 3), (4, 4, 4), (5, 5, 5), (6, 6, 6), (7, 7, 7), (8, 8, 8), (9, 9, 9)]
    

    如果您希望最终结果在元组的元组中而不是元组列表中,您可以再次包装 tuple

    >>> tuple(tuple(repeat(i, 3)) for i in range(1, 10))
    ((1, 1, 1), (2, 2, 2), (3, 3, 3), (4, 4, 4), (5, 5, 5), (6, 6, 6), (7, 7, 7), (8, 8, 8), (9, 9, 9))
    

    【讨论】:

      【解决方案4】:

      元组是一个不可变的列表。这意味着,一旦你创建了一个元组,它就不能被修改。阅读有关元组和其他顺序数据类型的更多信息here


      所以,如果您真的需要在运行时更改元组:

      1. 将元组转换为列表
      2. 对列表进行必要的更改
      3. 将列表转换回元组

      1. 创建列表
      2. 修改列表
      3. 将列表转换为元组

      所以,在你的情况下:

      a = []
      for i in range (1,10):
          a.append((i,i,i))
      a = tuple(a)   
      print a
      

      【讨论】:

        【解决方案5】:

        如果我要模仿这样的东西,我会这样做:

        a = tuple((n,n,n) for n in range(1,10))
        print(a)
        
        #((1, 1, 1), (2, 2, 2), (3, 3, 3), (4, 4, 4), (5, 5, 5), (6, 6, 6), (7, 7, 7), (8, 8, 8), (9, 9, 9))
        

        这是完成这项特定工作的最简单和 Pythonic 的方式。

        【讨论】:

          【解决方案6】:

          一个小实验让这个工作。我猜你需要在 a 中的元组后面加一个逗号来说服 python 它是一个元组。

          a = ((1,1,1),)
          for i in range(2, 10):
            a = a + ((i,i,i),)
          
          print(a)
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2018-09-11
            • 2020-09-16
            • 2016-05-08
            • 1970-01-01
            • 1970-01-01
            • 2021-09-03
            • 2021-10-15
            • 2020-02-15
            相关资源
            最近更新 更多