Python 3.x python map如何使用torch.tensor?

Python 3.x python map如何使用torch.tensor?,python-3.x,pytorch,fast-ai,Python 3.x,Pytorch,Fast Ai,我现在使用python,所以我试图从中理解这一行 我了解map如何在单个元素上工作 def sqr(a): return a * a a = [1, 2, 3, 4] a = map(sqr, a) print(list(a)) 这里我需要使用list(a)将地图对象转换回list 但我不明白的是,它是如何在多个变量上工作的 如果我试着这么做 def sqr(a): return a * a a = [1, 2, 3, 4] b = [1, 3, 5, 7]

我现在使用python,所以我试图从中理解这一行

我了解map如何在单个元素上工作

def sqr(a):
    return a * a

a = [1, 2, 3, 4]    

a = map(sqr, a)
print(list(a))
这里我需要使用
list(a)
将地图对象转换回list

但我不明白的是,它是如何在多个变量上工作的

如果我试着这么做

def sqr(a):
    return a * a


a = [1, 2, 3, 4]
b = [1, 3, 5, 7]

a, b = map(sqr, (a, b))
print(list(a))
print(list(b))
我得到一个错误:
TypeError:无法将序列与'list'类型的非int相乘

请给我澄清一下
谢谢你

映射
在单个列表上工作的方式与它在列表/列表元组上工作的方式相同,它获取给定输入的一个元素,而不管它是什么

之所以有效,是因为它接受列表作为输入

如果展开提供的以下行:

x_train, y_train, x_valid, y_valid = map(
    torch.tensor, (x_train, y_train, x_valid, y_valid)
)
这与执行以下操作相同:

x_train, y_train, x_valid, y_valid = [torch.tensor(x_train), torch.tensor(y_train), torch.tensor(x_valid), torch.tensor(y_valid)]
另一方面,您的
sqr
函数不接受列表。它要求标量类型为平方,而您的
a
a
b
则不是这种情况,它们是列表

但是,如果将
sqr
更改为:

def sqr(a):
    return [s * s for s in a]


a = [1, 2, 3, 4]
b = [1, 3, 5, 7]

a, b = map(sqr, (a, b))
或者按照@Jean的建议,
a,b=map(sqr,x)代表(a,b)


它会起作用的

好的,您正在将
map
应用于列表的元组。您需要
a,b=map(sqr,x)表示x在(a,b)
例如抱歉,我只读了问题的结尾。它在另一种情况下工作,因为函数接受列表,而不是单个值。
def sqr(a):
    return [s * s for s in a]


a = [1, 2, 3, 4]
b = [1, 3, 5, 7]

a, b = map(sqr, (a, b))