最近看一段Python2寫的代碼,有一句:
torch.FloatTensor(map(lambda x: x['values'], data))
Python3下運行后報錯:
TypeError: new(): data must be a sequence (got map)
我的data明明是sequence!原來是Python版本的問題ε=(´ο`*)))
map() 會根據提供的函數對指定序列做映射。
語法:
map() 函數語法:map(function, iterable, …)
參數:
function – 函數
iterable – 一個或多個序列
第一個參數 function 以參數序列中的每一個元素調用 function 函數,返回包含每次 function 函數返回值的新列表。
返回值:
Python 2.x 返回列表。
Python 3.x 返回迭代器。
例如:我想返回由字典組成的list a中的key為key1的所有元素的值,直接采用map返回一個iterator,通過list(map())將map轉換為list。
1 a = [{'key1':1, 'key2':2}, {'key1': 3, 'key3': 4}] 2 3 b = map(lambda x: x['key1'], a) 4 5 >>> b 6 7 <map at 0x23f3e386188> 8 9 10 >>> b = list(map(lambda x: x['key1'], a)) 11 12 [1, 3]
