在列表中拆分整数(python)
在python中,如何将一个列表(如在列表中拆分整数(python),python,list,integer,Python,List,Integer,在python中,如何将一个列表(如[18,8])变成类似[1,8,8] 我已经试过了 list1 = [18, 8] list2 = [list1[i : i + 1] for i in range(0, len(times_two_even_even_indexes))] 但那只会让我 list2 = [18], [8]] 对于以下解决方案,我将添加免责声明:“不要在家里做” 解释: str(x)将每个整数转换为字符串,然后使用list内置函数将字符串分隔为字符列表(每个字符都是一个数
[18,8]
)变成类似[1,8,8]
我已经试过了
list1 = [18, 8]
list2 = [list1[i : i + 1] for i in range(0, len(times_two_even_even_indexes))]
但那只会让我
list2 = [18], [8]]
对于以下解决方案,我将添加免责声明:“不要在家里做” 解释:
str(x)
将每个整数转换为字符串,然后使用list
内置函数将字符串分隔为字符列表(每个字符都是一个数字)
sum(…,[])
将列表展平,最后一个map(int,…)
将每个“字符串数字”转换回整数。您可以将所有整数合并为一个字符串,然后将字符串中的每个数字/字符映射到一个整数:
list1 = [18, 8]
print(list(map(int,"".join(map(str, list1)))))
[1, 8, 8]
或者使用列表comp对每个int调用str并对每个char进行迭代:
list1 = [18, 8]
print([int(ch) for i in list1 for ch in str(i)])
[1, 8, 8]
这个怎么样
intlist = [18, 8]
digitlist = [int(digit) for number in intlist for digit in str(number)]
print digitlist
这会将列表中的每个数字转换为字符串,然后将字符串中的每个字符转换回整数。通过在列表理解中使用double for(
for a in b for x in y
),在intlist
中的每个字符只输出一个列表项,这是我尝试过的最密集的形式
#since string is iterable convert to string,
#chain it, and convert back to int
from itertools import chain
print(list(map(int,chain.from_iterable(map(str,[18, 8])))))
[1, 8, 8]
内部循环将列表转换为字符串,然后使用itertools.chain将字符串展平为字符,最后将其转换回整数
import itertools
list2 = [int(y) for y in list(itertools.chain(*[str(x) for x in list1]))]
美好的在第一种解决方案中,包装
list
是多余的。@alfasin,如果使用python3,则需要在map@alfasin,我通常会贴一个列表(map..
,除非问题是专门针对python2的,我完全同意:防御编程:)
import itertools
list2 = [int(y) for y in list(itertools.chain(*[str(x) for x in list1]))]