循环遍历列表而不嵌套太多

时间:2012-05-24 02:42:20

标签: python list indexing

所以我有一个名为a的列表列表,我想在元组中保存该列表中项目的索引。例如,如果a[0][0] = 1,那么我想保存(0,0)并保存到该列表中。

现在我有ff代码:

z = []
for i in range(0, len(a)):
    for j in range(0, len(a)):
        if a[i][j] == '.':
            y = (i, j)
            z.append(y)

这很好用,但是我想摆脱嵌套,所以我想知道是否有另一种方法可以做到这一点而不需要嵌套太深。

3 个答案:

答案 0 :(得分:3)

from itertools import product
for i,j in product(range(len(a)), repeat=2):
    ...

答案 1 :(得分:1)

您可以使用列表理解:

z = [(ii, jj) for ii, nested in enumerate(a) for jj, val in enumerate(nested) if val == '.']

但是,我认为你对for循环的使用更加明确。

修改:此外,range默认情况下从0开始。

答案 2 :(得分:0)

有些人喜欢这样:

 z = ((i,j) for i in range(0, len(a)) for j in range(0, len(a)) if a[i][j] == '.')

我可能搞砸了这个 - 在家里没有python,但想法是你想要一个嵌套列表理解与if