Python 排列列表以包含重复项

我在 Python 中有一个类似于以下内容的列表:

x = [1,2,2,3,3,3,4,4]

有没有办法使用 Pandas 或其他一些列表理解来使列表看起来像这样,类似于队列系统:

x = [1,2,3,4,2,3,4,3]


守着一只汪
浏览 164回答 3
3回答

qq_花开花谢_0

有可能,通过使用 cumcounts=pd.Series(x)s.index=s.groupby(s).cumcount()s.sort_index()Out[11]: 0    10    20    30    41    21    31    42    3dtype: int64

智慧大石

如果我理解正确,您希望保留所有重复项,然后按顺序排列列表,在该顺序中您创建本质上是唯一值的单独列表,但它们都按顺序连接成一个列表.我认为这在 listcomp 中是不可能的,而且我没有想到在 Pandas 中轻松/快速地完成它。但简单的算法是:为每组唯一值创建一个不同的列表: 对于 x 中的 i:如果 x 不在列表 1 中,则添加到列表 1;否则如果不在list2中,则添加到list2中;否则如果不在列表 3 中,则广告到列表 3;等等。如果列表的数量不可预测,那么肯定有一种方法可以通过递归来做到这一点。根据它们的值评估列表,以确定您希望它们在最终列表中列出的顺序。从您的帖子中不清楚您希望它们处于什么顺序。按第 0 个位置的值查询可能是一种方法。将整个列表评估为 >= 彼此是另一种方式。一旦你有了这组列表和它们的顺序,就可以直接在最终列表中按顺序连接它们。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python