[英]How to enumerate through list with the first "index" reported as 1? (Python 2.4)
I need my counter to start at 1. Right now I have我需要我的计数器从 1 开始。现在我有
for(counter, file) in enumerate(files):
counter += 1
//do stuff with file and counter
But there must be a better way, in Python v2.4但是一定有更好的方法,在Python v2.4
Generators are perfect for this: 生成器非常适合:
def altenumerate( it ):
return ((idx+1, value) for idx, value in enumerate(it))
A simplified for older versions of python: 较旧版本的python的简化版本:
def altenumerateOld( it ):
idx = 1
for value in it:
yield (idx, value)
idx += 1
Instead of counter += 1
, maybe use counter + 1
where you've used counter
. 取而代之的
counter += 1
,也许还可以利用counter + 1
你使用过counter
。
Alternatively: 或者:
for counter, file in ((i + 1, f) for i, f in enumerate(files)):
...
(Python 2.6 and later has some great stuff. Try to upgrade if you can.) (Python 2.6和更高版本有一些很棒的东西。如果可以,请尝试进行升级。)
You can make your own version of enumerate()
: 您可以创建自己的
enumerate()
版本:
def enumerate_1based(iterable):
for index, item in enumerate(iterable):
yield index+1, item
Alternately, add a start
argument, to make it work just like later versions of enumerate()
. 或者,添加一个
start
参数,以使其像更高版本的enumerate()
一样工作。
I did this like this: 我这样做是这样的:
#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
Basically, this is the same, yet a self-contained construct. 基本上,这是相同的,但是一个独立的结构。
for (counter, files) in enumerate(files, start = 1)):
# counter would start at 1
//do stuff with file and counter
for counter, item in enumerate(testlist):
print(counter+1)
print(item)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.