从列表中获取唯一项的Python方法

从列表中获取唯一项的Python方法,python,Python,有时函数返回一个列表,但您知道它只有一项。一种方法是 a = somefunc()[0] 如果列表中有多个项,它们将被自动丢弃 建议使用 (a,) = somefunc() 一条评论建议 a, = somefunc() 两者都有一个优点,即具有多个元素的数组会产生ValueError:太多的值无法解压缩。它们还可以处理元组、集合和其他集合 这些方法被认为是肾盂的还是令人困惑的?他们有什么缺点吗?我总是偏爱他们 (a,) = somefunc() 正是因为文章中指出的原因。它假定列表中只有

有时函数返回一个列表,但您知道它只有一项。一种方法是

a = somefunc()[0]
如果列表中有多个项,它们将被自动丢弃

建议使用

(a,) = somefunc()
一条评论建议

a, = somefunc()
两者都有一个优点,即具有多个元素的数组会产生
ValueError:太多的值无法解压缩。它们还可以处理元组、集合和其他集合


这些方法被认为是肾盂的还是令人困惑的?他们有什么缺点吗?

我总是偏爱他们

(a,) = somefunc()

正是因为文章中指出的原因。它假定列表中只有一个元素。它更容易阅读。如果您正在使用Python3,一个好的方法是将剩余的值解压到一个可以访问或不可以访问的变量中。这样可以避免在返回多个值时引发ValueError

>>> a, *b = ['this', 'that', 'other']
>>> a
'this'
>>> b
['that', 'other']

对我来说,
(a,)
表单似乎最具可读性/功能性。它产生
ValueError
,并且比不带参数的表单更具可读性,尤其是在浏览时。处理元组表示法(a,)是我和较早的Python开发人员使用的。如果只使用第0个元素,这可能会很好,但如果需要第4个元素呢?您最终得到的是
\uu,\uu,\u a=somefunc()
,而不是
a=somefunc()[4]
@IanAuld“…您知道它只有一项”@SuperBiasedMan该用例用于类似数据库游标的东西。考虑<代码>游标。执行(“选择1”)。从SQL语句中可以看出,
fetchone
的返回值的长度为1。这对于查看返回的不需要的值特别有用。回答得好!如果他们只是在寻找1,我会使用这样的东西:try:(a,)=somefunc()catch:a,*b=somefunc()和log b,这样你就不会无缘无故地带着b,但是如果有额外的元素存在,你可以看到其中存储了什么。PS对不起,格式太糟糕了,ctrl+k是一个禁止使用的注释。@Obj3ctiv3_C_88但这意味着您必须重新运行该函数,并且有可能第二次只使用一个参数得到不同的结果。@Obj3ctiv3_C_88您可以
a,*b=sumfunc()
并检查
如果b:log b
,它允许您只运行函数一次,以避免可能得到不同的结果。@SteveO'Driscoll两者都很好,这实际上取决于sumfunc()返回的内容。这还取决于您预计遇到异常的频率。如果你大部分时间都希望通过一个案例,我会坚持使用try:catch:因为通过案例的速度大约要快60%