将一堆不同的项目移动到 python 列表的末尾

Moving a bunch of distinct items to the end of a python list

我有这个 python 列表:

['Intercept', 'a', 'country[T.BE]', 'country[T.CY]', 'country[T.DE]', 'b', 'c', 'd', 'e']

我想要最后的国家项目:

['Intercept', 'a', 'b', 'c', 'd', 'e', 'country[T.BE]', 'country[T.CY]', 'country[T.DE]']

如何实现?

(注意,这些项目是我将用于回归分析的数据框的第 headers 列。列名和奇怪的排序由 patsy.dmatrices 生成。)

我尝试了排序、弹出、删除和列表理解,但无济于事。在这种情况下,我决定不解释我为解决这个问题做了什么,但没有奏效。这是一个简单的问题,与评论员不同,我没有几十年的编程经验。

如果您的逻辑是将任何包含 国家/地区 的项目放在后面,请使用 sorted 和键:

l = ['Intercept', 'a', 'country[T.BE]', 'country[T.CY]', 'country[T.DE]', 'b', 'c', 'd', 'e']
sorted(l, key=lambda x: 'country' in x)

输出:

['Intercept',
 'a',
 'b',
 'c',
 'd',
 'e',
 'country[T.BE]',
 'country[T.CY]',
 'country[T.DE]']

这里我假设有没有country[文本就是你要拆分的...那么你可以使用:

li = ['Intercept', 'a', 'country[T.BE]', 'country[T.CY]', 'country[T.DE]', 'b', 'c', 'd', 'e']
[x for x in li if not 'country[' in x] + [x for x in li if 'country[' in x]