如何在Python中创建空元组的元组?

2024-05-15 02:33:53 发布

您现在位置:Python中文网/ 问答频道 /正文

如何创建仅由空元组组成的元组,即(())?我试过tuple(tuple())tuple(tuple(tuple()))tuple([])tuple(tuple([])),它们都给了我()

我使用这种东西的原因如下:假设您有带m项的n包。为了表示包中的项列表,我使用了长度为tuplen,其中元组的每个元素都是包的代表。行李可能是空的,标记为()。现在,在某个初始点上,我只有一个袋子里有空的东西!


Tags: 标记元素列表原因代表元组袋子tuple
3条回答

空元组是()(或者更详细、更慢的tuple()),只有一个项(例如整数1)的元组是(1,)(参见herehere)。因此,只包含空元组的元组是

((),)

以下是一些结果,表明这是有效的:

>>> a=((),)
>>> type(a)
<type 'tuple'>
>>> len(a)
1
>>> a[0]
()
>>> type(a[0])
<type 'tuple'>
>>> len(a[0])
0

tuple()是唯一真正的空元组,但是()和((),)创建的长度为1的元组包含长度为0的元组,而不是长度为0的元组本身。

如果您想知道“如何创建(或零长度)元组…”。。。。我在这篇文章中搜索了“如何创建一个空元组”,然后意识到这不是同一个问题,但可能会被误认为是那个问题(就像搜索一样),所以我想我会提供答案:

如何简单地创建一个空元组?

原来的问题可能会误导你,因为原来的答案几乎可以作为一个空元组,但一定要通过一次测试。

(),将创建一个“empty”元组,如前面的答案中所建议的((,))也可以,正如((((((((((((((((((,))))))一样。事实上,您可以使用任意数量的外括号,它们只是用作括号。但是,python在打印元组时确实添加了一组外括号。

空括号是“no value”的非标准表示形式,添加尾随逗号将从“no value”生成元组。但它是一个具有“无值”项的元组,而不是空元组。

注意:这不是一个长度为零的元组,正如其他例子所示。外部元组是一个只有一个值的元组,这个值本身就是空元组。因此,这会在另一个元组中创建一个空元组,而另一个元组是notempty。对于一个真正的空元组本身,使用tuple()尽管()的行为有些相似,但并不完全正确。

>>>  a = (),
>>> type(a)
<class 'tuple'>
>>> len(a)
1
>>> a
((),)
>>> len(a[0])  # the inside tuple is empty, just not the outside one
0

类似地,对于长度为1但具有值的元组(对于b为零,对于c为“”)

>>> b = 0,
>>> type(b)
<class 'tuple'>
>>> len(b)
1
>>>b
(0,)
# now with an empty string
>>> c = "",
>>> type(c)
<class 'tuple'>
>>> len(c)
1
>>>c
('',)
>>> len (c[0])  # same len of c[0] as with 'empty' tuple
0

因此,外部括号用于显示元组,但实际上不是元组的一部分,也不用于创建元组。

然而,所有这些括号方法在外部并不是真正的空方法,这也是有用例的。

>>> a = ((),)  # extra brackets just to show same as other answers
>>> len(a)
1
>>> if a:
   print("not empty")
not empty
>>> e = tuple()
>>> len(e)
0
>>> type(e)
<class 'tuple'>
>>> if e:
   print("not empty")

>>> # note...did not print...so e acts as false as an empty tuple should

因此,如果您真的需要一个真正的空元组,请使用tuple(),但如果您所需要的足够接近,则可以使用(),((),)

我并不惊讶这个(())没有工作,因为外括号被解释为-括号。所以(()) == (),就像(2) == 2。不过,这应该管用:

((),)

相关问题 更多 >

    热门问题