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

时间:2016-06-18 09:45:22

标签: python tuples

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

我使用这样的东西的原因如下:假设你有n个包含m个商品的包。为了表示包中的商品列表,我使用长度为tuple的{​​{1}},其中该元组的每个元素都是包的代表。行李可能是空的,标有n。现在,在某些初始阶段,我只有一个带空物品的袋子!

5 个答案:

答案 0 :(得分:52)

空元组是(),只有一个项目的元组(例如整数1),称为单例(参见herehere)是(1,)。因此,仅包含空元组的元组是

((),)

以下是一些显示有效的结果:

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

答案 1 :(得分:4)

我对(())没有工作感到惊讶,因为外括号被解释为 - 括号。所以(()) == ()就像(2) == 2一样。但这应该有效:

((),)

答案 2 :(得分:2)

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

如果您想回答“如何创建一个(或零长度)元组……。”,我发现这篇文章的搜索内容为“如何创建一个空元组”,然后意识到这不是一个相同的问题,但是可能会被误认为该问题(就像搜索一样),所以我虽然会提供以下答案:

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

原始问题可能会误导您,因为原始答案作为一个空的元组几乎足够好,但确实无法通过一项测试。

(),会根据先前的答案使用((),)创建一个“空”元组,实际上也将与((((((((((),))))))一样起作用您可以使用任意数量的外部括号,它们仅用作括号。但是,python在打印元组时会添加一组外括号。

空括号是“无值”的一种非标准表示形式,并且在末尾加上逗号会使“无值”成为一个元组。但这是一个具有“无值”条目的元组,而不是一个空元组。

注意:这不是长度为零的元组,如其他示例所示。外部元组是一个具有一个值的元组,只有该值本身才是空元组。因此,这会在另一个元组内部创建一个空元组 ,而另一个元组 not 是空的。对于真正的空元组,请使用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(),但是如果您所需要的足够多,可以使用(),((),)

答案 3 :(得分:1)

一个空元组:

my_tuple = ()

一个包含 1 个字符串的元组:

my_tuple = ('foo',)

一个包含 2 个字符串的元组:

my_tuple = ('foo', 'bar')

一个有 1 个空元组的元组:

my_tuple = ((),)

一个有 2 个空元组的元组:

my_tuple = ((), ())

答案 4 :(得分:1)

在一般情况下,构成元组的是逗号,而不是括号。在空元组的情况下,事情变得混乱,因为独立的逗号在语法上是不正确的。因此对于空元组的特殊情况,“是逗号产生元组”规则不适用,而是使用特殊情况 () 语法。