将数字拆分为单独的整数字符串。 'int'对象不可迭代?



简单的问题。

我有一个数字(整数(:

mynumber = 1239

我想把它转换成一个单独的整数列表,比如[1,2,3,9]:

numbersplit =  [int(x) for x in mynumber]

但我得到了错误:

TypeError: 'int' object is not iterable

为什么不起作用?我只是确定ints实际上是ints

然而,当我把它包装在str.中时,它确实有效。。?

[int(x) for x in str(mynumber)]
[1, 2, 3, 9, 8, 9, 8, 7, 2, 3, 9, 4, 7, 8]

在我做这件事之前,列表需要转换成字符串吗?

不能对int进行迭代,但可以对字符串进行迭代。

一种方法是将其转换为字符串:

mynumber = 1239
number_str = str(mynumber)

然后你可以创建你的列表,将其转换回int

[int(x) for x in number_str]

试试这个:

[int(i) for i in str(mynumber)]

当您尝试执行for x in mynumber时,您假设mynumber是可迭代的,但它实际上是一个整数。您需要将它键入到str中,然后可以将其视为可迭代的。您可以执行for x in str(mynumber),这样它将在每次迭代中为您提供每个字符,然后您可以将每个字符转换为整数。试试这个:

numbersplit =  [int(x) for x in str(mynumber)]

在执行此操作之前,是否需要将列表转换为字符串?

否。您可以对列表进行迭代。

对字符串进行迭代可以得到单个字母,而不能对int进行迭代。

可以对字符串进行迭代的原因是Python字符串实际上是sequence类型。

用于在列表、字符串、字典等可迭代数据上迭代。int对象不是可迭代的数据类型,因此我们不能单独访问int数字,因为我们可以在索引的帮助下访问字符串或列表。

或者使用:

numbersplit = list(map(int, str(mynumber)))

整数是不可迭代的,要知道对象是否可迭代,请尝试使用:

>>> iter(1)
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
iter(1)
TypeError: 'int' object is not iterable
>>> iter('a')
<str_iterator object at 0x000000CE599A40B8>
>>> 

如果它抛出一个错误,就意味着它是不可迭代的。

一个整数是不可迭代的,在将其转换为字符串后,可以对其数字进行迭代

list(map(int, str(mynumber)))

最新更新