【问题标题】:Is any elegant way to make a list contains some integers to become a list contains some tuples?是否有任何优雅的方法可以使列表包含一些整数成为包含一些元组的列表?
【发布时间】:2013-03-21 19:51:11
【问题描述】:

我有一个清单

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

有什么优雅的方法可以让它们成对工作吗? 我的预期结果是

[(1, 2), (3, 4), (5, 6), (7, 8), (9, 10)]

【问题讨论】:

  • "有没有优雅的方法..." 在 Python 中,答案总是肯定的;)

标签: python


【解决方案1】:
pairs = zip(*[iter(a)]*2)

是常用的成语

【讨论】:

  • 可以补充说明吗?
【解决方案2】:
[(a[2*i], a[2*i+1] ) for i in range(len(a)/2)]

这当然是假设 len(a) 是偶数

【讨论】:

    【解决方案3】:
    def group(lst, n):
        """group([0,3,4,10,2,3], 2) => [(0,3), (4,10), (2,3)]
    
        Group a list into consecutive n-tuples. Incomplete tuples are
        discarded e.g.
    
        >>> group(range(10), 3)
        [(0, 1, 2), (3, 4, 5), (6, 7, 8)]
        """
        return zip(*[lst[i::n] for i in range(n)]) 
    

    来自 activestate,n 元组的配方,而不仅仅是 2 元组

    【讨论】:

      【解决方案4】:
      b = []
      for i in range(0,len(a),2):
          b.append((a[i],a[i+1]))
      a = b
      

      【讨论】:

        【解决方案5】:

        尝试使用切片和 zip。

        >>> a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
        >>> zip(a[::2],a[1::2])
        [(1, 2), (3, 4), (5, 6), (7, 8), (9, 10)]
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-12-27
          • 2019-06-24
          • 1970-01-01
          • 2012-11-18
          • 2020-12-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多