元
2023/1/10、本日コードを実行する際、カスタムデータセットを使用し、インデックスに従ってデータセットを分割する必要がありますが、「int 32」のインデックスを与えられたため、次のエラーが報告されました:
IndexError: 整数、スライス (`:`)、リスト、タプル、および long または bool テンソルのみが有効なインデックスです (int32 を取得)。
エラーメッセージによると、型エラー「IndexError」です。サポートするには「整数」またはその他の型が必要なので、ここではインデックスを整数型として直接処理します: int (x) は問題ありません。
リスト内の各要素を int で処理するエレガントな方法がないため、本日のブログに登場しました
map() は、反復されたシーケンス内の各要素に対して関数操作を実行します。
備考: 「set collection」または「type() tuple」と混同される可能性があります
最初のパラメーター関数は、パラメーター シーケンス内の各要素を使用して関数関数を呼び出します (カスタマイズすることもできますが、多くの場合、いくつかの非常に単純な操作を実行するためです。ラムダ匿名関数を直接使用する方が便利です)。 return contains 関数 function が値の新しいリストを返すたびに。
文法
map() 関数の構文:
map(関数、イテラブル、...)
パラメータ
- 関数 -- 関数
- iterable – 1 つ以上のシーケンス
コード例:
注: ★★ ★ Lambda匿名関数は非常に一般的に使用されます
>>> def square(x) : # 计算平方数
... return x ** 2
...
>>> map(square, [1,2,3,4,5]) # 计算列表各个元素的平方
<map object at 0x100d3d550> # 返回迭代器
>>> list(map(square, [1,2,3,4,5])) # 使用 list() 转换为列表
[1, 4, 9, 16, 25]
>>> list(map(lambda x: x ** 2, [1, 2, 3, 4, 5])) # 使用 lambda 匿名函数
[1, 4, 9, 16, 25]
>>>
または、たとえば、各要素を整数に変換するには:
list(map(int, [1,2,3,4,5]))