gpt4 book ai didi

python - 将一项(单例)的元组减少到它的值

转载 作者:行者123 更新时间:2023-11-28 20:02:18 25 4
gpt4 key购买 nike

有没有内置的方法来减少 singleton tuple到它的(唯一)值(value)?

我可以使用如下函数实现此目的:

def foo(tup):
if len(tup) == 1:
return tup[0]
return tup

这会将单例缩减为它的值并保留一个非单例元组:

>>> x = (3, )
>>> foo(x)
3
>>> x = (3, 4)
>>> foo(x)
(3, 4)

但这似乎是一项相当低级的任务,我敢打赌它已经潜伏在 Python 标准库中的某个地方。这种功能让我想起了 numpy.squeeze但这给我们留下了一个数组,这可能不是我们想要的。

最佳答案

有一种内置方法可以从元组中提取单个项目。这种方式是访问它的第一个索引,即 tpl[0]

但是不,没有内置的方法可以将单元组提取到它的单个值中,而让所有其他元组保持原样。如果您考虑一下,这将是一种危险的操作:

您需要检查其长度这一事实意味着您可能不知道它是单元组还是不同大小的元组。这意味着您也无法判断函数的返回值是什么:它可以是一个元组(除 1 之外的任何大小),也可以是其他东西(即单元组的值)。这使得您的函数非常脆弱,因为它不再具有明确的返回类型。

虽然像 len(x) 这样的东西对于元组 x 可以很好地工作,但是 len(foo(x)) 可能不会case x 是一个元组,里面的元素不是一个序列。或者 list(x) 会将元组转换为列表;但是 list(foo(x)) 会将其转换为列表,或将其中的任何内容转换为列表。

因此,如果您考虑一下,您的功能并没有多大意义。这可能就是为什么没有“如果有一个值就解包”功能的原因。

也就是说,您可以解包任意长度(大于 0)的元组的第一个值。也许这就是您真正想要做的:

>>> x = 1,
>>> y = 2, 3
>>> z = 4, 5, 6
>>> a, *_ = x
>>> a
1
>>> b, *_ = y
>>> b
2
>>> c, *_ = z
>>> c
4

关于python - 将一项(单例)的元组减少到它的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46686577/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com