1

2 次元のリストがあり、リスト内のすべてのリストについてそのインデックスを出力し、各リスト内のすべての要素についてもそのインデックスを出力したいと考えています。これが私が試したものです:

l = [[0,0,0],[0,1,1],[1,0,0]]

def Printme(arg1, arg2):
    print arg1, arg2

for i in l:
    for j in i:
        Printme(l.index(i), l.index(j))

しかし、出力は次のとおりです。

0 0  # I was expecting: 0 0
0 0  #                  0 1
0 0  #                  0 2
1 0  #                  1 0
1 1  #                  1 1
1 1  #                  1 2
2 0  #                  2 0
2 1  #                  2 1
2 1  #                  2 2

何故ですか?どうすればやりたいことができるようになりますか?

4

2 に答える 2

1

ヘルプlist.index:

L.index(value, [start, [stop]]) -> integer -- 値の最初のインデックスを返します。値が存在しない場合は ValueError を発生させます。

ここで使用する必要がenumerate()あります:

>>> l = [[0,0,0],[0,1,1],[1,0,0]]
for i, x in enumerate(l):
    for j, y in enumerate(x):
        print i,j,'-->',y
...         
0 0 --> 0
0 1 --> 0
0 2 --> 0
1 0 --> 0
1 1 --> 1
1 2 --> 1
2 0 --> 1
2 1 --> 0
2 2 --> 0

ヘルプenumerate:

>>> print enumerate.__doc__
enumerate(iterable[, start]) -> iterator for index, value of iterable

Return an enumerate object.  iterable must be another object that supports
iteration.  The enumerate object yields pairs containing a count (from
start, which defaults to zero) and a value yielded by the iterable argument.
enumerate is useful for obtaining an indexed list:
    (0, seq[0]), (1, seq[1]), (2, seq[2]), ...
于 2013-06-16T09:46:33.957 に答える
0

.index(i)の最初の出現のインデックスを示しますi。したがって、常に同じインデックスが見つかります。

于 2013-06-16T09:47:42.993 に答える