首页 > 解决方案 > 有没有办法创建一个新行并将某些元素添加到该行?

问题描述

我有一个 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 的形式存储在一行中。

标签: pythonarrayslistconditional-statements

解决方案


您可以使用 轻松对组进行分组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这里将由TrueFalse。这会过滤掉False带有if k.

剩下的只是将数字拼接在一起并制作一个整数:

"".join(map(str, v)))

使用 itertools 的好处在于它可以优雅地处理大量输入——它会处理出现的事情。


推荐阅读