如何拆分 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]))]
我想拆分列表中的一个值并使其成为两个值。
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]))]