python - 无论不常见的成员如何,如何根据较长的列表对较短的列表进行排序?
问题描述
我有两个 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}
解决方案
您可以通过以下方式获取包含常见成员的列表:
>>> 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']
推荐阅读
- git - 为什么 First Commit (Root Commit) 的时间戳大于 Second Commit?
- java - 版本 8 及更高版本的 OpenJDK 安全更新
- json - ORM: Sequelize: 除了一些 json 数据,我如何返回?
- python - 如何修复错误“AttributeError:'pygame.Surface'对象没有属性'units'”?
- swift - 在 SwiftUI 中使用状态变量作为函数的输入
- java - Akka:可序列化的道具
- c# - 如何获取要通过字符串列表过滤的 IQueryable 项目
- nginx - 检查并替换来自 nginx 的请求 url 或正文
- regex - url匹配的正则表达式
- typescript - 如何在 TypeScript 中使用 Mobx createObservableArray?