在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]]
答案 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]