根据条件将元组列表拆分为单独的列表

Posted

技术标签:

【中文标题】根据条件将元组列表拆分为单独的列表【英文标题】:Split list of tuples into seprate list based on a condition 【发布时间】:2021-07-24 10:47:23 【问题描述】:

我有一个这样的元组列表:

a = [(1, 0.0), (1, 1.0), (1, 0.0), (2, 0.36034115138592754), (1, 1.0),
(1, 0.0), (2, 0.0), (3, 0.9999999999999991), (4, 0.0), (5, 0.0), 
(6, -1.0000000000000002), (7, 0.9999999999999999), (8, 1.0000000000000002), (9, 1.0), 
(10, 0.0), (1, 1.0), (1, 0.0)]

我想每次第一个元素为 1 时拆分它。 我已经尝试过使用 groupby,但我每次都需要有一个不同的元组列表,因为以后我必须绘制它并且每个元组都是一个特定的点。 我的预期输出是:

[(1, 0.0)]
[(1, 1.0)]
[(1, 0.0), (2, 0.36034115138592754)]
[(1, 1.0)]
[(1, 0.0), (2, 0.0), (3, 0.9999999999999991), (4, 0.0), (5, 0.0), 
(6, -1.0000000000000002), (7, 0.9999999999999999), (8, 1.0000000000000002), (9, 1.0), (10, 0.0)]
[(1, 1.0)]
[(1, 0.0)]

【问题讨论】:

请用您的预期输出更新您的问题。 完成了,我以为我已经写了,抱歉 @Ibrahim 我认为最后两个元组(1, 1.0), (1, 0.0) 也应该包含在预期输出中。 是的,他们应该是,这是为了给出我想要实现的目标。我还添加了最后两个 [sub.tolist() for sub in np.split(a, inds) if sub.size] 其中inds, = np.nonzero(np.array(a)[:, 0] == 1) 【参考方案1】:

我在这里发布@Mustafa Aydin 的解决方案,以便其他用户可以尽快找到解决方案。

inds, = np.nonzero(np.array(a)[:, 0] == 1)
[sub.tolist() for sub in np.split(a, inds) if sub.size]

【讨论】:

以上是关于根据条件将元组列表拆分为单独的列表的主要内容,如果未能解决你的问题,请参考以下文章

将元组列表列表转换为 dict 未按预期工作

如何将元组列表展平为pythonic列表[重复]

将元组中的列表转换为numpy数组?

将元组列表转换为 Pandas 系列

将元组列表转换为字典

Python:将元组列表转换为dict列表