90926


下記は例になりますが、このようなコードで何故かtupleになってしまいます。  
原因がわかりません。  
些細な質問になりますが、ご教授をよろしくお願いいたします。

[code]

    from operator import itemgetter
    
    List1 = [['a', 'b', 'c'], ['x', 'y', 'z']]
    
    for i, row in enumerate(List1):
      save = []
      print(type(row)) # <- <class 'list'>
      save = itemgetter(0,2)(row)
      print(type(save)) # <- <class 'tuple'>
    
[/code]


CC BY-SA 4.0
2022-09-04T14:39:27.473
90925
2022-09-05T01:29:07.223
30173
question
python python3
リストをitemgetterしているはずなのに何故かtupleになっている


「何故かtupleになってしまいます。」とのことですが、ドキュメントの説明にある通りかと思います。

[operator.itemgetter(*items)](https://docs.python.org/ja/3/library/operator.html#operator.itemgetter)

> `operator.itemgetter(item)`  
>  `operator.itemgetter(*items)`  
>  演算対象からその [_ _getitem_
> _()](https://docs.python.org/ja/3/library/operator.html#operator.__getitem__)
> メソッドを使って item を取得する呼び出し可能なオブジェクトを返します。 二つ以上のアイテムを要求された場合には、アイテムのタプルを返します。

質問のコードの場合は`['a', 'b', 'c']`の0番目と2番目の要素であるaとcが`('a', 'c')`として取得されます。同様に` ['x',
'y', 'z']`の0番目と2番目の要素であるxとzが`('x', 'z')`として取得されます。


CC BY-SA 4.0
2022-09-04T15:01:49.027
90926
2022-09-05T01:29:07.223
2022-09-05T01:29:07.223
3060
39819
90925
answer