1

カウンターを 1 から開始する必要があります。

for(counter, file) in enumerate(files):
    counter += 1
    //do stuff with file and counter

しかし、Python v2.4 にはもっと良い方法があるはずです。

4

7 に答える 7

5

ジェネレーターはこれに最適です。

def altenumerate( it ):
    return ((idx+1, value) for idx, value in enumerate(it))

古いバージョンの python 用に簡略化されたもの:

def altenumerateOld( it ):
    idx = 1
    for value in it:
        yield (idx, value)
        idx += 1
于 2011-11-23T00:32:29.777 に答える
2

の代わりにcounter += 1、使用counter + 1した場所を使用してくださいcounter

または:

for counter, file in ((i + 1, f) for i, f in enumerate(files)):
    ...

(Python 2.6 以降には優れた機能がいくつかあります。可能であればアップグレードしてみてください。)

于 2011-11-23T00:32:06.110 に答える
2

の独自のバージョンを作成できますenumerate()

def enumerate_1based(iterable):
    for index, item in enumerate(iterable):
        yield index+1, item

または、引数を追加して、start以降のバージョンの と同じように機能させますenumerate()

于 2011-11-23T00:35:22.753 に答える
1

私はこのようにこれをしました:

#Emulate enumerate() with start parameter (introduced in Python 2.6)
for i,v in (i+start,v for i,v in enumerate(seq)):
    //do stuff

基本的に、これは同じですが、自己完結型の構成です。

于 2011-11-23T00:40:47.837 に答える
1

使用できますzip()

>>> enums = zip(range(1, len(files) + 1), files)
>>> for index, val in enums:
    print index, val
于 2011-11-23T00:30:07.890 に答える
0
 for counter, item in enumerate(testlist):
    print(counter+1)
    print(item)
于 2011-11-23T00:35:19.073 に答える