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

时间:2019-02-25 03:21:03

标签: python list

我想在列表中拆分一个值并将其设为两个值。

arr = [10]

输出应变为:

arr = [1,0]

5 个答案:

答案 0 :(得分:1)

可以通过使用映射,列表,转换为字符串,列表理解来解决。

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

Python 2

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

Python 3

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

同时适用于python 2和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]))]

答案 1 :(得分:0)

使用列表推导进行两次迭代:

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

答案 2 :(得分: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]

答案 3 :(得分: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))]

答案 4 :(得分:0)

您可以使用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]返回:

[1, 0]