在列表中拆分整数(python)

时间:2015-10-10 22:49:21

标签: 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]]

5 个答案:

答案 0 :(得分:1)

对于以下解决方案,我会添加免责声明:“不要在家里做”...

lst = [18, 8]
map(int, sum(map(lambda x: list(str(x)), lst), [])) #[1, 8, 8]

<强>解释
str(x)将每个整数转换为字符串,然后使用list内置函数将字符串分隔为字符列表(每个字符都是一个数字)。

sum(..., [])将列表展平,最后map(int, ...)将每个“字符串数字”转换回整数。

答案 1 :(得分:1)

您可以将所有整数加入一个字符串,然后将字符串中的每个数字/字符映射到一个int:

list1 = [18, 8]

print(list(map(int,"".join(map(str, list1)))))
[1, 8, 8]

或者使用list comp在每个int上调用str并迭代每个char:

 list1 = [18, 8]

print([int(ch) for i in list1 for ch in str(i)])
[1, 8, 8]

答案 2 :(得分:1)

这是我尝试过的最密集的形式 内部循环将列表转换为字符串然后使用itertools.chain将字符串展平为字符,最后将其转换回整数

import itertools
list2 = [int(y) for y in list(itertools.chain(*[str(x) for x in list1]))]

答案 3 :(得分:0)

这个怎么样?

intlist = [18, 8]
digitlist = [int(digit) for number in intlist for digit in str(number)]
print digitlist

这会将列表中的每个数字转换为字符串,然后将字符串中的每个字符转换回int。通过在列表推导中使用double-for(for a in b for x in y),intlist内的每个字符只输出一个列表项。

答案 4 :(得分:0)

#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]