使用列表的2个索引作为map

时间:2016-04-26 10:36:44

标签: python lambda

我正在接收我放入列表中的数据,并想使用python map& amp;中的新列表的两个索引来计算某些内容。拉姆达。

我目前正在使用此代码,但却出现错误

TypeError: argument 2 to map() must support iteration

for i in range(int(raw_input())):
    a = map(float, raw_input().split(' '))
    print map(lambda x, y: x / (y^2), a[0], a[1])

我使用的数据

47 1.30
84 2.45
52 1.61
118 2.05
70 1.67
75 1.58

3 个答案:

答案 0 :(得分:1)

您可以将数组作为参数传递给lambda,并使用其索引访问lambda中的元素:

print map(lambda x: x[0]/(x[1]**2), [a])

此外,您使用的是按位XOR运算符(^),而不是" power"运营商(**)

但是......我没有看到在这里使用lambda的意义,你只想对这两个元素进行一些计算。 所以你可以这样做:

print a[0]/a[1]**2

答案 1 :(得分:0)

https://docs.python.org/2/library/functions.html#map

  

map(function,iterable,...)   将函数应用于iterable的每个项目并返回结果列表...

a是可迭代的,因为raw_input().split(' ')是可迭代的,但a[0]a[1]不是。

你应该print a[0] / a[1]**2

正确输入

6
47 1.30
84 2.45
52 1.61
118 2.05
70 1.67
75 1.58

和代码

for i in range(int(raw_input())):
    a = map(float, raw_input().split(' '))
    print a[0] / a[1]**2

答案 2 :(得分:-1)

您可以使用适合您的用例的map

,而不是使用reduce
for i in range(int(raw_input())):
    a = map(float, raw_input().split(' '))
    print reduce(lambda x, y: x / (y^2), a)