python - 有没有办法创建一个新行并将某些元素添加到该行?
问题描述
我有一个 python 1D 列表,当前包含整数,然后是字母't'
。例如:
list = [1,2,3,'t',2,3,2,'t',1,3,4,'t']
这些整数实际上表示数字 123、232 和 134。我的解决方案需要是一个数组,其中这些数字作为整数并删除了“t”。因此,新列表将是“一个列表(或 numpy 数组),每次运行一个 't' 时都会插入一个新行,并且之前的整数需要以 123、232、134 的形式存储在一行中。
解决方案
您可以使用 轻松对组进行分组itertools.groupby
。然后只需将整数列表覆盖为整数:
from itertools import groupby
l = [1,2,3,'t',2,3,2,'t',1,3,4,'t']
[int("".join(map(str, v))) for k, v in
groupby(l, key=lambda x: x!='t') if k]
# [123, 232, 134]
了解追星族在做什么很有帮助。如果您从剩下的组中取出生成整数的代码:
[list(v) for k, v in groupby(l, key=lambda x: x!='t') if k]
# [[1, 2, 3], [2, 3, 2], [1, 3, 4]]
这只是根据元素是否等于“t”对列表进行分组。k
这里将由True
或False
。这会过滤掉False
带有if k
.
剩下的只是将数字拼接在一起并制作一个整数:
"".join(map(str, v)))
使用 itertools 的好处在于它可以优雅地处理大量输入——它会处理出现的事情。