我在字符串中有一堆数字。我想将它们分成单独的数字,以便我以后可以用它们做更多的事情。
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)]
帮助??
答案 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)
[ 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中,列表推导可能更具可读性。