首页 > 解决方案 > 无论不常见的成员如何,如何根据较长的列表对较短的列表进行排序?

问题描述

我有两个 a 和 b 列表,其中 a 比 b 长,并且与 b 有一些共同成员。在以下示例中,我想要的输出是将 b 排序为:

b=[1,3,5]

并且还从 a 中删除了不常见的成员。

但是使用 zip 和 set ,我尝试了两种方法,改变了 a :6 和 7 的 2 个不常见成员的位置,但我没有得到相同的结果。

注意:成员并不总是整数,也可以是字符串

情况1 :

a=[ 1,2,3,4,5,6,7]

b=[1,22,3,44,5]

a,b= zip(*sorted(zip(a,b)))

a
Out[15]: (1, 2, 3, 4, 5)

b
Out[16]: (1, 22, 3, 44, 5)

set(a)&set(b)
Out[18]: {1, 3, 5}

案例2:

a=[ 6,7,1,2,3,4,5]

b=[1,22,3,44,5]

a,b= zip(*sorted(zip(a,b)))

a
Out[20]: (1, 2, 3, 6, 7)

b
Out[21]: (3, 44, 5, 1, 22)

set(a)&set(b)
Out[22]: {1, 3}

标签: pythonlistsortingsetfiltering

解决方案


您可以通过以下方式获取包含常见成员的列表:

>>> a=[ 1,2,3,4,5,6,7]
>>> b=[1,22,3,44,5]
>>> sorted(set(a)&set(b))
[1, 3, 5]

第二个例子:

>>> a=[ 6,7,1,2,3,4,5]
>>> b=[1,22,3,44,5]
>>> sorted(set(a)&set(b))
[1, 3, 5]

字符串:

>>> a=['a','c','b','d','e']
>>> b=['c','a','g','4','b']
>>> sorted(set(a)&set(b))
['a', 'b', 'c']

推荐阅读