gpt4 book ai didi

python - 如果两个项目相同,则将列表内部列表移动到末尾

转载 作者:太空宇宙 更新时间:2023-11-03 12:20:16 24 4
gpt4 key购买 nike

我有以下配对值列表:

a = [['A', 'B'], ['A', 'C'], ['D', 'D'], ['C', 'D']]

此列表可以包含一对或多对由同一项目组成的显着对:

['D', 'D']

我想将这些对移动到列表的末尾以获得:

a = [['A', 'B'], ['A', 'C'], ['C', 'D'], ['D', 'D']]

我想不通,但我相信我不会太远:

a.append(a.pop(x) for x in range(len(a)) if a[x][0] == a[x][1])

最佳答案

直截了当sorting :

a = [['A', 'B'], ['A', 'C'], ['D', 'D'], ['C', 'D']]
a = sorted(a, key=lambda x: x[0] == x[1])
# [['A', 'B'], ['A', 'C'], ['C', 'D'], ['D', 'D']]

这个简单的key function之所以有效,是因为 FalseTrue 之前排序,同时将所有对映射到仅两个键保持 stability .这种方法的缺点是排序是 O(N_logN)。对于没有不必要的列表连接的线性解决方案,您可以使用 itertools.chain使用适当的生成器:

from itertools import chain
a = list(chain((p for p in a if p[0] != p[1]), (p for p in a if p[0] == p[1])))

关于python - 如果两个项目相同,则将列表内部列表移动到末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47968530/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com