Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在列表中拆分整数(python)_Python_List_Integer - Fatal编程技术网

在列表中拆分整数(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内置函数将字符串分隔为字符列表(每个字符都是一个数

在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
内置函数将字符串分隔为字符列表(每个字符都是一个数字)


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