【发布时间】:2019-07-18 10:27:04
【问题描述】:
我想将列表中的一个值拆分为两个值。
arr = [10]
数组应该变成:
arr = [1,0]
【问题讨论】:
-
不一样,因为它不在字符串中,我应该在没有内置函数的情况下解决这个问题
我想将列表中的一个值拆分为两个值。
arr = [10]
数组应该变成:
arr = [1,0]
【问题讨论】:
可以通过map、list、转字符串、列表推导来解决。
如果您的列表只有一个值。
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]))]
【讨论】:
您可以使用列表推导:
[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] 返回:
[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]
【讨论】: