web-dev-qa-db-ja.com

不要な変数を作成せずにPythonでタプルを解凍することは可能ですか?

私のIDEがcolumnが未使用の変数であると文句を言わないように、次の関数を書く方法はありますか?

def get_selected_index(self):
    (path, column) = self._tree_view.get_cursor()
    return path[0]

この場合、タプルの2番目のアイテムは気にせず、解凍時にその参照を破棄したいだけです。

33
Nathan

In Python _は、無視されるプレースホルダーとしてよく使用されます。

(path, _) = self._treeView.get_cursor()

タプルはインデックス付け可能であるため、解凍を回避することもできます。

def get_selected_index(self):
    return self._treeView.get_cursor()[0][0]
53
kennytm

2番目の項目を気にしない場合は、最初の項目を抽出してみませんか。

def get_selected_index(self):
    path = self._treeView.get_cursor()[0]
    return path[0]
4
Steven

はい、可能です。 _規則で受け入れられた回答は、プレースホルダー変数に対してのみ解凍されます。

itertools.islice を介してこれを回避できます:

from itertools import islice

values = (i for i in range(2))

res = next(islice(values, 1, None))  # 1

これにより、以下と同じresが得られます。

_, res = values

上で示したように、このソリューションは、valueslistTupleなどのインデックス可能なコレクションではない反復可能である場合に機能します。

1
jpp

きれいに見えますが、良いパフォーマンスかどうかはわかりません。

a = (1, 2, 3, 4, 5)
x, y = a[0:2]
0
east