当前位置: 首页 > 面试题库 >

为什么在Python中将单个元素元组解释为该元素?

燕寒
2023-03-14
问题内容

谁能解释为什么在Python中将单个元素元组解释为该元素?

他们为什么不只是将元组打印(1,)(1)

请参阅以下示例:

>>> (1)
1
>>> ((((1))))
1
>>> print(1,)
1
>>> print((1,))
(1,)

问题答案:

单个元素元组永远不会被视为包含的元素。括号对分组最有用,而不是对元组的创建。逗号会这样做。

他们为什么不只将(1,)打印为(1)?

可能是因为打印内置容器类型提供了一种表示形式,可用于通过表示重新创建容器对象,例如eval

的docs__repr__在此方面提供了一些清晰度:

如果可能的话,这应该看起来像一个有效的Python表达式,可用于重新创建具有相同值的对象

回答您的问题,(1)只是1带有分组括号的整数。为了通过其表示重新创建单例元组,必须将其打印(1,)为创建元组的有效语法。

>>> t = '(1,)'
>>> i = '(1)'
>>> eval(t)
(1,) # tuple
>>> eval(i)
1    # int


 类似资料:
  • 问题内容: window.onload = function(){ 这是我的代码,当我单击“文本”时,它将向您提示两次,但是当我单击该框时,该元素将仅触发一次,为什么? 问题答案: 当您单击标签时,它会触发单击处理程序,并且您会收到警报。 但是单击标签还会自动将click事件发送到关联的输入元素,因此将其视为对复选框的单击。然后事件冒泡会导致在包含元素(即标签)上触发click事件,因此您的处理程

  • 问题内容: 众所周知,列表理解 并且有字典理解,例如 但 最终将成为生成器,而不是理解力。这是为什么? 我的猜测是a是不可变的,但这似乎并不是答案。 问题答案: 您可以使用生成器表达式: 但是对于…生成器表达式,已经使用了括号。

  • 问题内容: 我正在使用原始html和JQuery讨论一些想法。我所做的一件事是创建一个包含一组行的表元素。 但是,当我在FireFox + Firebug,IE8开发人员工具栏或Google Chrome JavaScript调试器中查看代码时,所有这些都表明在所有 tr* 节点周围都存在一个 tbody 元素。 * 我不反对这种情况……但这是标准行为吗? 问题答案: TBODY元素定义表中的一组

  • 问题内容: 有没有办法让Jackson将单个JSON对象解释为具有一个元素的数组,反之亦然? 例如,我有2种略有不同的JSON格式,我需要两者都映射到相同的Java对象: 格式 A (带有一个元素的JSON数组): 格式 B (JSON对象,是的,我知道它看起来“错误”,但这就是我给的): 以上两种都应转换为的目标Java对象: 当前,只有 A 可以正确解析为Data。我想避免直接篡改JSON本身

  • 有没有办法让Jackson将单个JSON对象解释为一个包含一个元素的数组,反之亦然? 例如,我有两种稍有不同的JSON格式,我需要两者都映射到同一个Java对象: 格式(包含一个元素的JSON数组): 格式B(JSON对象,是的,我知道它看起来“错了”,但我得到的是): 目标Java以上两者都应转换为的对象: 目前,只有A将正确解析为数据。我希望避免直接篡改JSON本身。Jackson中是否有一些

  • 问题内容: 有没有办法让Jackson将单个JSON对象解释为具有一个元素的数组,反之亦然? 例如,我有2种略有不同的JSON格式,我需要两者都映射到相同的Java对象: 格式A(带有一个元素的JSON数组): 格式B(JSON对象,是的,我知道它看起来“错误”,但这就是我给的): 以上两种都应转换为的目标Java对象: 当前,只有A可以正确解析为Data。我想避免直接篡改JSON本身。我可以篡改