当前位置: 首页 > 知识库问答 >
问题:

Python在子列表中分组列表中的重复值

苍恩
2023-03-14

我需要从一个列表中追加一些重复的值到一个子列表中,让我用一个例子来解释:

我有一个名为array的变量,它包含大写字母字符串和$符号。

array = ['F', '$', '$', '$', 'D', '$', 'C']

我的最终目标是拥有这个数组:

final_array = ['F', ['$', '$', '$'], 'D', ['$'], 'C']

在示例中,我需要将所有的$符号分组到原始数组中的子列表中,我想过在数组中迭代,找到当前$附近的所有符号,然后创建第二个数组,但我想也许还有更多的pythonic我可以做的,有什么想法吗?

共有1个答案

陶锋
2023-03-14

您可以从itertools中使用groupby

array = ['F', '$', '$', '$', 'D', '$', 'C']

from itertools import groupby

result = []
for key, group in groupby(array):
    if key == '$':
        result.append(list(group))
    else:
        result.append(key)

print(result)

当然,您可以将for循环缩短为一个理解:

result = [list(group) if key == '$' else key for key, group in groupby(array)]
 类似资料:
  • 我试图在列表中的列表中插入一些东西,但是我不知道该怎么做。 例如,我有一个列表列表: 我想将插入子列表,索引为0,位于元素之后,所以它看起来像这样:

  • 问题内容: 我想从列表列表中删除所有重复列表。 所以我有一个这样的清单清单。 我希望有: 我不知道该怎么办。 谢谢 问题答案: 您可以使用一组: 或者,如果您更喜欢列表推导/生成器: 最后,如果顺序很重要,则可以始终对b进行排序:

  • 问题内容: 如果想基于每个嵌套列表的第一个元素评估重复项,谁能提出一个好的解决方案从嵌套列表中删除重复项? 主列表如下所示: 如果已经在第一位置出现了另一个具有相同元素的列表,那么我想删除该列表并得到以下结果: 您可以建议一种算法来实现此目标吗? 问题答案: 您是否关心保留订单/删除了哪些重复项?如果不是,则: 会做的。如果您想保留订单并想保留第一个订单,则:

  • 我想把两个列表合并成一个列表列表。反之亦然。我找不到任何工作,我对Python非常陌生 例子: 如何将S拆分回原来的S1和S2?示例:

  • 问题内容: 我在这样的列表中有一个元组/列表: python(在非常低的cpu / ram机器上运行)交换值的最快方法是什么… 当前使用: 有更好或更快速的方法吗??? 问题答案: 您可以使用地图: 或列表理解: 列表理解是首选方法,并且在需要lambda时,它比map快得多。但是请注意,列表理解具有严格的评估标准,也就是说,如果担心内存消耗,它将在绑定到变量后立即对其进行评估。 生成器 :

  • 问题内容: 是否可以使用python获取哪些值在列表中重复? 我有一个项目清单: 我知道删除重复项的最佳方法是,但是是否可以知道正在重复哪些值?如您所见,在此列表中,重复项是第一个和最后一个值。。 是否有可能获得此结果或python中类似的东西?我正在努力避免做出荒谬的大条件声明。 问题答案: 这些答案是O(n),因此比使用的代码多一点,但随着时间的延长,效率会大大提高 如果您只想知道重复项,请使