【问题标题】:How to create N-tuples in Python?如何在 Python 中创建 N 元组?
【发布时间】:2014-02-08 03:12:00
【问题描述】:

在 Python 中创建 n 元组列表的最简单方法是什么?

例如,如果我想为数字 n(例如 3)创建:

我想生成以下一组元组:

(1,1,1) (1,1,2) (1,1,3) (2,1,1) (2,1,2) (2,1,3) (3,1,1) (3,1,2) (3,1,3)  
(1,2,1) (1,2,2) (1,2,3) (2,2,1) (2,2,2) (2,2,3) (3,2,1) (3,2,2) (3,2,3)  
(1,3,1) (1,3,2) (1,3,3) (2,3,1) (2,3,2) (2,3,3) (3,3,1) (3,3,2) (3,3,3) 

【问题讨论】:

    标签: python list matrix numbers tuples


    【解决方案1】:

    确实,itertools.product 的输入迭代就像嵌套的 for 循环:

    list((x,y,z) for x in range(1,4) for y in range(1,4) for z in range(1,4))
    

    相当于:

    list(product(range(1, 4), repeat=3)) 
    
    # or
    
    list(product(range(1, 4), range(1, 4), range(1, 4)))
    

    【讨论】:

      【解决方案2】:
      l = [1, 2, 3]
      from itertools import product
      print [item for item in product(l, repeat=3)]
      

      【讨论】:

        【解决方案3】:

        使用itertools.product:

        >>> from itertools import product
        >>> list(product(range(1, 4), repeat=3))
        [(1, 1, 1), (1, 1, 2), (1, 1, 3), (1, 2, 1), (1, 2, 2), (1, 2, 3), (1, 3, 1), (1, 3, 2), (1, 3, 3), (2, 1, 1), (2, 1, 2), (2, 1, 3), (2, 2, 1), (2, 2, 2), (2, 2, 3), (2, 3, 1), (2, 3, 2), (2, 3, 3), (3, 1, 1), (3, 1, 2), (3, 1, 3), (3, 2, 1), (3, 2, 2), (3, 2, 3), (3, 3, 1), (3, 3, 2), (3, 3, 3)]
        

        【讨论】:

        • @Archana 相当于3个嵌套for-loops,阅读链接文档。
        猜你喜欢
        • 2023-04-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-06
        • 1970-01-01
        • 2022-01-11
        • 2013-10-01
        相关资源
        最近更新 更多