Python列表索引
我有一个双列表,我想知道是什么,以获得零的索引阵列Python列表索引
board =[[1,2,0],
[2,1,2],
[1,1,0]]
for boxes in board:
if 0 in boxes:
print boxes
这样,而是我希望有回报 [0的最佳途径, 2] [2,2]
你可以使用列表理解:
[(i, j) for i in range(3) for j in range(3) if board[i][j] == 0]
这将包括每行多个零(如果存在)。
你的问题很模糊(怎么样在内部列表中的一个多零),随时如果你正在寻找其他的东西发表评论:
zeroes = []
for x, box in enumerate(board):
if 0 in box:
zeroes.append((x, box.index(0)))
print zeroes
有了您给出列表,这个打印
[(0, 2), (2, 2)]
更短,更Python版本将使用列表理解是这样的:
zeroes = [(x, box.index(0)) for x, box in enumerate(board) if 0 in box]
我不知道枚举函数会非常方便地派上用场。 有没有办法将for if循环压缩到一行? – GeneralZero 2012-03-28 20:02:24
@GeneralZero:这可以在一行中写成:对于x,zeroes = [(x,box.index(0)),如果在box中为0,则枚举(box)中的box。请注意,此代码(以及上述答案中的代码)至多包含每行一个零 - 不知道这是否是您想要的。 – 2012-03-28 20:30:57
@SvenMarnach谢谢你指出。实际上我确实需要每行多于一个 – GeneralZero 2012-03-28 21:19:09
如果子列表中有多个0,该怎么办? – 2012-03-28 19:43:10
如果'board'是一个NumPy数组,你可以使用'zip(* numpy.where(a == 0))''。 – 2012-03-28 19:43:30
@ IgnacioVazquez-Abrams这里有这个问题吗?我不确定,但我认为他总是打印整个盒子......所以我认为也可以有3个零,但它仍然可以工作。 – evotopid 2012-03-28 19:45:57