在Python中是否可以解包元组而不创建多余变量?

40 投票
4 回答
20517 浏览
提问于 2025-04-16 04:38

有没有办法写这个函数,让我的开发工具不再提示column是个未使用的变量呢?

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

在这种情况下,我并不关心元组中的第二个项目,只想在解包时丢弃对它的引用。

4 个回答

1

是的,这是可能的。接受的答案中使用的 _ 这种写法仍然可以解包,只是会变成一个占位符变量。

你可以通过 itertools.islice 来避免这个问题:

from itertools import islice

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

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

这样得到的 res 和下面的结果是一样的:

_, res = values

上面展示的解决方案适用于 values 是一种可迭代的对象,但不是像 listtuple 这样的可以通过索引访问的集合。

4

如果你不在乎第二个项目,那为什么不直接提取第一个呢:

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

在Python中,_通常用作一个被忽略的占位符。

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

你也可以不进行拆包,因为元组是可以通过索引来访问的。

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

撰写回答