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

如何创建仅包含一个空元组(即(()))的元组? 我尝试了tuple(tuple()),tuple(tuple(tuple())),tuple([])和tuple(tuple([])),它们都给了我()。

我使用这种东西的原因如下:假设您有n个袋子和m个物品。 为了表示包中的项目列表,我使用了长度为n的tuple,其中该元组的每个元素都是包的代表。 袋子可能是空的,用()标记。 现在,在一开始的时候,我只有一个装满空东西的袋子!

空元组文字是(),而不是(,)

@vaultah已更正。 :)

"现在,在某个开始的时候,我只有一个装满空东西的袋子!"请注意,元组是不可变的,因此空元组基本上是无用的,因为您以后无法向其中添加项目。如果需要,您应该考虑使用列表。

@DeepSpace没错。然后使用该元组创建一个新的元组,并将所有元组存储在某个地方以进行日志记录。

IMO似乎您应该使用列表而不是元组。然后,创建列表列表,在外部列表或内部列表中添加和删除项目非常简单。 a = [[]]

内部有5个元组的元组是((),)*5。

@jeffery_the_wind这不会创建我想要的那个,但是感谢您提供lists。它在以下工作代码tuple([tuple()])中为我提供了帮助。同样,以下答案只是基于元组,这是非常可取的。

@DeepSpace:一个空的元组是没有用的,因为与None不同,您仍然可以对其执行any()和len()之类的序列操作。测试None的需求可能会使原本优雅的迭代循环变得混乱,并且不对其进行测试可能会导致意外的异常。

除了逗号混淆之外,这里的主要见解是tuple()构造函数是转换器,而不是容器。也就是说,您必须为其提供某种容器(从技术上讲是迭代器)。这就是为什么tuple(1)是TypeError的原因。因此,尽管tuple()确实是一个空元组,但tuple(tuple())只是将其转换为另一个空元组。

空元组是()(或更冗长和较慢的tuple()),而只有一项(例如整数1)(称为单例)的元组是(1,)。 。因此,仅包含空元组的元组为

1((),)

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

1

2

3

4

5

6

7

8

9

10

11>>> a=((),)

>>> type(a)

>>> len(a)

1

>>> a[0]

()

>>> type(a[0])

>>> len(a[0])

0

这是对实际问题的正确答案,但请注意,这并未显示如何创建简单的空元组。 如果您只是看一个空的元组,而不是包含一个空元组的元组,请小心!

@ innov8:我的答案以"空元组为()"开头。 它确实"显示了如何创建一个简单的空元组"。 然后继续说明如何"创建只包含一个空元组的元组"。

@rory_daulton您的答案是对问题的完美答案。 我的观点是,您可以在该页面上登陆另一个问题,即如何创建一个空元组-这是另一个问题。 当然,您没有集中在没有被问到的问题上!

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

1((),)

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

如果您想回答"如何创建一个空(或长度为零)的元组...。",我发现此帖子的搜索内容为"如何创建一个空的元组",那么您会发现这不是一个相同的问题,但是可以被误认为是这个问题(就像搜索一样),所以我尽管会提供以下答案:

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

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

(),会按照前面的答案使用((),)创建一个'空'元组,({[((((((((),))))))也会起作用,实际上您可以使用任何数字在您选择的外括号中,它们仅用作括号。但是,python在打印元组时会添加一组外括号。

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

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

1

2

3

4

5

6

7

8

9>>> a = (),

>>> type(a)

>>> len(a)

1

>>> a

((),)

>>> len(a[0]) # the inside tuple is empty, just not the outside one

0

类似地,对于长度为1但值(在b的情况下为零,在c的示例中为")的元组

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17>>> b = 0,

>>> type(b)

>>> len(b)

1

>>>b

(0,)

# now with an empty string

>>> c ="",

>>> type(c)

>>> len(c)

1

>>>c

('',)

>>> len (c[0]) # same len of c[0] as with 'empty' tuple

0

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

但是,所有这些方括号方法在外层都不是真正的空白,这也是有用例的。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15>>> 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)

>>> if e:

print("not empty")

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

因此,如果您确实需要真正的空元组,请使用tuple(),但是如果您所需要的足够多,可以使用(),或((),)

其中的一部分似乎仅对python 2有效,在python 3中a = (); len(a)返回0

是的,您必须使用a =(),; len(a),因为没有结尾的逗号,您将无法获得所需的结果。 您得到一个元组,而不是一个元组中的一个元组

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值