【问题标题】:Iterating over every two elements in a list in Python [duplicate]迭代Python列表中的每两个元素[重复]
【发布时间】:2015-01-17 00:09:07
【问题描述】:

如何遍历列表中的所有对组合,例如:

list = [1,2,3,4]

输出:

1,2
1,3
1,4
2,3
2,4
3,4

谢谢!

【问题讨论】:

  • 使用 for 循环和切片?

标签: python list iteration


【解决方案1】:

使用itertools.combinations:

>>> import itertools
>>> lst = [1,2,3,4]
>>> for x in itertools.combinations(lst, 2):
...     print(x)
...
(1, 2)
(1, 3)
(1, 4)
(2, 3)
(2, 4)
(3, 4)

顺便说一句,不要使用list 作为变量名。它隐藏了内置函数/类型list

【讨论】:

    【解决方案2】:

    使用itertools.combinations

    >>> import itertools
    >>> list(itertools.combinations([1,2,3,4], 2))
    [(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]
    

    【讨论】:

      【解决方案3】:

      您可以按如下方式使用嵌套的 for 循环:

      list = [1,2,3,4]
      for x in list :
      
          for y in list :
      
              print x, y
      

      【讨论】:

      • 这将产生笛卡尔积(例如,您将得到 (1,1) 和 (3,1) 和 (4,4))。
      猜你喜欢
      • 2015-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-21
      • 1970-01-01
      • 2014-02-01
      • 2010-12-27
      相关资源
      最近更新 更多