在字符串中拆分整数 - python

时间:2018-04-23 19:30:07

标签: python

我在字符串中有一堆数字。我想将它们分成单独的数字,以便我以后可以用它们做更多的事情。

number = [6, 18, 6, 4, 12, 18, 0, 18]

我想像这样分开这些...... 例如:6,1,8,6,4,1,2,1,8,0,1,8

我尝试过split(),我尝试过list(str(number)),我尝试将这些转换为字符串和整数,我尝试过搜索stackoverflow。

在其他搜索中,我一直看到像这样的列表理解示例,我不明白并且在尝试之后没有得到所需的结果:     [int(i)for i in str(number)]

帮助??

3 个答案:

答案 0 :(得分:2)

首先,您必须将列表中的每个元素都视为字符串,然后将每个字符转换为整数。

def customSplit(l):
        result = []
        for element in l:
                for char in str(element):
                        result.append(int(char))
        return result

print(customSplit([6, 18, 6, 4, 12, 18, 0, 18]))
# prints [6, 1, 8, 6, 4, 1, 2, 1, 8, 0, 1, 8]

答案 1 :(得分:2)

list comprehension

怎么样?
[ digit for x in number for digit in str(x) ]

生成字符串列表:

[' 6',' 1',' 8',' 6',' 4',& #39; 1',' 2',' 1',' 8',' 0',' 1&# 39;,' 8']

[ int(digit) for x in number for digit in str(x) ]

如果您更喜欢单位数整数列表:

[6, 1, 8, 6, 4, 1, 2, 1, 8, 0, 1, 8]

答案 2 :(得分:0)

你可以这样使用itertools.chain

>>> list(map(int, chain.from_iterable(map(str, numbers))))
[6, 1, 8, 6, 4, 1, 2, 1, 8, 0, 1, 8]

我主要发布了这个,所以我可以将它与Coconut等价物进行比较:

>>> numbers |> map$(str) |> chain.from_iterable |> map$(int) |> list

虽然看起来更好。如果您喜欢Unicode字符,则可以将|>替换为

>>> numbers ↦ map$(str) ↦ chain.from_iterable ↦ map$(int) ↦ list

在标准Python中,列表推导可能更具可读性。