如何拆分 Python 中只有一个整数值的列表?

How to split a list that has ONLY ONE integer value in Python?

我想拆分列表中的一个值并使其成为两个值。

arr = [10]

数组应该变成:

arr = [1,0]

通过两次迭代使用列表理解:

>>> [int(x) if x.isdigit() else x for y in arr for x in str(y)]
[1, 0]
>>> 

为了按照这样的格式分割一个整数,你可以使用str()来 将整数分解成它的部分。

您只需要对变量而不是列表执行此操作。 所以

num = arr[0]

然后把它变成一个字符串

string = str(num)

你可以用 list()

把它变成一个列表

然后您可以使用 int()

将多个字符串转回数字

总之:

>>> arr = [10]
>>> num = arr[0]
>>> string = str(num)
>>> string_arr = list(string)
>>> arr = list(map(int, string_arr))
>>> arr
[1,0]

或者简化而不是使用中间变量。

>>> arr = [10]
>>> arr = list(map(int, str(arr[0])))
>>> arr
[1,0]

您可以使用列表理解:

[int(digit) for digit in str(arr[0])]

list(map()):

list(map(int, str(arr[0])))

为了最有效的解决方案,不要转换为字符串;相反,使用基本的数学运算:

import math

[arr[0] // 10 ** n % 10 for n in reversed(range(int(math.log10(arr[0])) + 1))]

可以使用while循环,不断将给定的整数除以10,得到余数,直到商为0,然后反转结果列表,得到想要的列表:

def split_int(i):
    while True:
        i, r = divmod(i, 10)
        yield r
        if not i:
            break

所以 list(split_int(arr[0]))[::-1] returns:

[1, 0]

可以通过map、list、转字符串、list comprehension来解决

如果您的列表只有一个值。

Python 2

arr = [10]
arr = map(int,str(arr[0]))

Python 3

arr = [10]
arr = list(map(int, str(arr[0])))

python2 和 3

arr = [10]
arr_str=list(str(arr[0]))
arr = [int(x) for x in arr_str]

一个班轮

arr = [10]
arr = [int(x) for x in list(str(arr[0]))]