我想在列表中拆分一个值并将其设为两个值。
arr = [10]
输出应变为:
arr = [1,0]
答案 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]