打印出地图功能的索引

时间:2013-12-20 00:30:45

标签: python functional-programming

我正在尝试使用python的一些函数编程部分,并且为了测试我认为我会打印出1到100之间所有数字的前n个整数的总和。

for i in map(lambda n: (n*(n+1))/2, range(1,101)):
     print "sum of the first %d integers: %d" % (i,i)

最后一行打印为:

sum of the first 5050 integers: 5050

它应该是“前100个整数的总和是5050(我可能有一个错误,但我会修复它)。

我的问题是保存索引的变量是什么?

4 个答案:

答案 0 :(得分:4)

您的代码未定义包含索引的变量。在最外层的范围内,只有变量(在谈论Python时有时称为“名称”)“i”。

如果您想要索引,可以使用内置函数enumerate()

for i,x in enumerate([5,10,15]):
    print i, x

答案 1 :(得分:2)

你可以从lambda返回带有(index,value)的元组,就像那样:

for i,s in map(lambda n: (n,(n*(n+1))/2), range(1,101)):
    print "sum of the first %d integers: %d" % (i,s)

答案 2 :(得分:1)

或者你可以试试这个:

for ind, val in enumerate(map(lambda n: (n*(n+1))/2, range(1,101)), 1):
    print "sum of the first %d integers: %d" % (ind, val)

答案 3 :(得分:0)

Mayby我不明白你的目的但是你不能只使用print

print "sum of the first %d integers: %d" %(100,sum(xrange(1,101)))

如果您想要用户输入...

i = input("Enter the upper range to sum: ")
print "sum of the first %d integers: %d" %(i,sum(xrange(1,i+1)))

我也使用xrange()因为它在python v2中比range()更快。