【问题标题】:How to iterate through a list of tuples in Python? [duplicate]如何遍历 Python 中的元组列表? [复制]
【发布时间】:2016-10-25 02:34:22
【问题描述】:
coordinates = [(i, j) for i, row in enumerate(mymatrix) for j, v in enumerate(row) if v == '0']

我有一个坐标列表(元组),想打印坐标、坐标右侧最近的元组以及与坐标在同一列中的下一个元组。我将如何为每个坐标执行此操作?

例如:

coordinates = [(0,0),(0,3),(1,0),(1,2),(1,3)]

第一个坐标的输出是:

0 0 0 3 1 0

第二个坐标的输出是:

0 3 -1 -1 1 3

【问题讨论】:

  • 我不明白:第二个坐标右边最近的元组是(1, 0),而不是-1,-1。 -1 值从何而来?

标签: python list multidimensional-array tuples


【解决方案1】:

此打印与您定义的不完全一样,但您可以在元组列表上使用这种迭代,并对每个元组执行任何您需要的操作:

coordinates = [(0,0),(0,3),(1,0),(1,2),(1,3)]
for (i,j) in coordinates:
    print i,j

【讨论】:

    【解决方案2】:

    提取第一个(或第二个)坐标很简单,这是一个你应该知道的python习语:

    [ i for i, j in coordinates ]
    

    但是,这与您的示例输出不匹配(并且会给出五个值,而不是六个)。所以...谁知道你的意思。至于你的其他任务,我什至猜不出来。你需要明确你的目标或等待能读懂你想法的人。

    【讨论】:

      【解决方案3】:

      这样做:

      coordinates = [(0,0),(0,3),(1,0),(1,2),(1,3)]
      
      f = lambda x,index:tuple( i[index] for i in x)
      
      tup1 = f(coordinates,0)
      tup2 = f(coordinates,1)
      
      print tup1
      print tup2
      

      【讨论】:

        【解决方案4】:

        正如其他人评论的那样,不确定 -1 值来自哪里,这仅对应于您的第一个示例输出:

        coordinates = [(0,0),(0,3),(1,0),(1,2),(1,3)]
        
        
        def return_coords(c,p):
            return [y for x in range(p,p+3) for y in c[x]]
        
        return_coords(coordinates, 0)
        return_coords(coordinates, 1)
        

        输出:

        [0, 0, 0, 3, 1, 0]
        [0, 3, 1, 0, 1, 2]
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-11-15
          • 2019-11-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多