1

リストがあり、リストが含まれています。内部リストは空である可能性があります。これは構造です:

[[],[a,b],[],[c],[d]]

私のコード:

for inner in list:
   for char in inner:
      print char           # I want to add indexes of inner lists here

出力は次のとおりです。

abcd

出力を次のようにしたい:

2a2b4c5d

数字は内部リストのインデックスです。これを行う簡単な方法はありますか?

4

4 に答える 4

8

組み込み型であるlistため、変数名として使用しないでください。shadowslist

>>> lst = [[],['a','b'],[],['c'],['d']]
>>> for idx, inner in enumerate(lst):
      for char in inner:
        print idx, char


1 a
1 b
3 c
4 d

enumerate()あなたはそれがゼロベースを数えるのを見るでしょう。ただし、2番目の引数をstartとして指定して、1ベースの期待される出力に一致させることができます。

>>> for idx, inner in enumerate(lst, 1):
    for char in inner:
        print idx, char


2 a
2 b
4 c
5 d

ただし、必要な場合にのみ、Pythonは慣例により0ベースでカウントします。

于 2012-04-30T21:41:24.420 に答える
2

その出力を正確に取得するには、sys.stdout に直接書き込む方法があります。print コマンド (2.x の場合) は、せいぜい各インデックス + 文字の間にスペースを残すことになります。

import sys
for ndx, inner in enumerate([[],['a','b'],[],['c'],['d']], 1):
    for char in inner:
        sys.stdout.write('%d%s' % (ndx, char))
于 2012-04-30T21:46:34.883 に答える
1
for i, inner in enumerate(myList):  # just add an index variable here
    for char in inner:
        print i          # and use it wherever you need to
        print char
于 2012-04-30T21:41:36.323 に答える
1

これはうまくいくはずです:

for i in range(len(list)):
    for char in list[i]:
        print i+1
        print char

(このoOを入力中に3つの新しい回答が表示されました)

于 2012-04-30T21:44:01.343 に答える