如何在Python中迭代一个元组列表?

3
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

3
我不理解:第二个坐标右侧最接近的元组是(1,0),而不是-1,-1。这些-1的值从哪里来? - Prune
4个回答

9

这个打印输出不完全符合您的定义,但您可以在元组列表上使用此种迭代方式,并对每个元组执行所需操作:

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

4

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

[ i for i, j in coordinates ]

然而,这并不符合您的示例输出(仅会给出五个值,而非六个)。所以……谁知道您的意思。至于您的其他任务,我甚至无法猜测。您需要澄清您的目标或等待能够读懂您想法的人。

0

像这样做:

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

0

正如其他人所评论的那样,不确定-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]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接