python - 从列表中创建相等值索引的子列表
问题描述
我正在尝试将整数列表拆分为相等整数索引的子列表。所以说我有一个清单:
original_list = [1,2,1,4,4,4,3,4,4,1,4,3,3]
所需的输出将是:
indexes : [[0,2,9], [1], [6,11,12], [3,4,5,7,8,10]]
# corresponds to sublists: [[1,1,1] [2], [3,3,3], [4,4,4,4,4,4]]
我不知道如何做到这一点,因为大多数解决方案都要求您首先对原始列表进行排序,但就我而言,这会弄乱索引。由于这个原因,Itertools 或 np.arrays 对我没有帮助,因为它们只对顺序相等的元素进行分组。
有谁知道这个问题的解决方案?我很想听!
解决方案
这是我使用 numpy 执行此操作的方法,使用我在评论中链接的 argsort 函数。
original = [1,2,1,4,4,4,3,4,4,1,4,3,3]
indexes = []
s = set()
for n in np.argsort(original):
if original[n] in s:
indexes[-1].append(n)
else:
indexes.append([n])
s.add(original[n])
print(indexes)
推荐阅读
- java - 使用 JPA CriteriaBuilder 定义排序选项
- php - PHP 从 mysqli 查询中获取相关结果
- r - 如何在 Rshiny 中使两个菜单相互依赖或分层?
- graph - Tableau - 创建小倍数图表,显示 covid-19 疫苗副作用文本字段中各种关键字的频率
- discord - 尽管已授予 Bot 管理员权限,但仍要求 Kick Member 许可
- sql - 触发器评估哪些被删除的行在新数据中不存在并将它们插入到新表中
- android - 如何在 android 中删除 EditText 材料设计底线?
- spring-boot - Spring boot 在执行之前解压应用程序
- linux - 是否有一种方法可以打印与字符串匹配的所有行(这部分已完成)以及该字符串之后的一组行数?
- java - networkx 和 JGraphT 之间 katz 中心性得分的差异