2011-06-01 32 views
0

我有2个数字25798709和25716544代表一些连续数字的最小值和最大值,每个数字与前面的数字相差一个例如。 25798709,25798710,25798711 ................ 25716544我想要一个将这些数字转换为1,2,3,4,5,......的Python代码.......并映射到1,2,3,4,5原来的数字在两列: 像:生成和映射两组数字

1  25798709 
    2  25798710 
    3  25798711 
+0

因此,“映射”仅仅是减去或添加'25798709-1'? – 2011-06-02 00:36:05

回答

0

给你:

mapping = dict(enumerate(range(25716544, 25798709))) 
for i in iter(mapping): 
    print i, '->', mapping[i] 

我应该警告你这是从零开始的。所以0 - > 25716544,1 - > 25716545等

+0

为什么在使用dict的时候只能迭代枚举返回的对象呢? – 2011-06-02 00:17:52

+0

OP想要映射,即字典。这就是为什么。 – 2011-06-02 00:29:36

0
# make it work in both Python 2 and 3 
from __future__ import print_function 
try: xrange 
except NameError: xrange= range 

def my_enumerate(num1, num2): 
    start= min(num1, num2) 
    end= max(num1, num2) + 1 
    for data in enumerate(xrange(start, end), 1): 
     print("%d\t%d" % data) 
0

这会工作,并从1开始:

for idx, num in enumerate(range(25716544, 25798709), 1): 
    print idx, ' ', num 

从0开始:

for idx, num in enumerate(range(25716544, 25798709)): 
    print idx, ' ', num 
1

Oneliner:

print(*['{0}\t{1}'.format(*i) for i in enumerate(range(MIN,MAX+1), 1)], sep='\n') 

对于python2.6或2.7只需添加from __future__ import print_function