【问题标题】:How does type casting happens in Python between list and tuple? [duplicate]在 Python 中,列表和元组之间的类型转换是如何发生的? [复制]
【发布时间】:2020-03-23 03:59:59
【问题描述】:

我试图调试代码并发现我们不能将单个浮点或整数参数传递给元组,如下所示:

tuple(5) 

TypeError: 'int' object is not iterable 

但是tuple([5]) 有效。

python 是否将 int 转换为 list 到上面的元组?如果是这样,为什么这也会产生错误?

tuple(list(5)) 

TypeError: 'int' object is not iterable 

【问题讨论】:

  • 您的意图是生成一个包含单个 5 的列表,例如 [5],还是生成一个长度为 5 的列表?
  • 我的目的是了解导致错误的原因。如果我添加单个数字,则会引发错误元组((5))。但是 tuple((5,5)) 没有

标签: python python-3.x list


【解决方案1】:

出现第二个错误是因为list(5) 是抛出TypeError 的部分,原因与tuple(5) 抛出TypeError 的原因相同。

你可以使用

>>> tuple(list([5]))
(5,)
>>> tuple(list(5 for _ in range(1)))
(5,)

两者都可以正常工作。

【讨论】:

  • 我关心的是为什么 tuple((5)) 会抛出错误,而不是 tuple((5,5))。 python如何将迭代器属性分配给一个而不是另一个。还是我们只是接受并继续前进?
  • 因为(5) 不是tuple,它是int。您可以通过type((5)) 进行检查。然而type((5,)) 返回tuple,所以我们可以做tuple((5,)) 就好了。
  • 我明白了。这就是为什么 tuple([5]) 也有效的原因?
  • 没错。 tuple 构造函数接受一个可迭代对象——因此可以是列表、元组或生成器之类的任何东西。
  • 是的,基本上。 (5,) 是一个 tuple,里面有一个东西 - int 5。
猜你喜欢
  • 2015-06-24
  • 1970-01-01
  • 2020-10-19
  • 2014-02-13
  • 2015-09-24
  • 2017-07-30
  • 1970-01-01
  • 1970-01-01
  • 2017-12-31
相关资源
最近更新 更多