我有一个列表A和列表B,我想从这两个列表中获取公共元素,但希望当我获取公共元素时,它们应该保持 List 的顺序A。
首先,我开始将它们转换为集合并取交叉点,但这存在维护顺序的问题。
common = list(set(A).intersection(set(B)))
Run Code Online (Sandbox Code Playgroud)
所以我决定做列表理解:
common = [i for i in A if i in B]
Run Code Online (Sandbox Code Playgroud)
我正进入(状态
IndexError: too many indices for array
Run Code Online (Sandbox Code Playgroud)
作为此类问题的一般答案,您可以使用sortedfunction withlambda x:A.index(x)作为其键,该键将根据列表 A 的顺序对结果进行排序:
>>> common = sorted(set(A).intersection(B) ,key=lambda x:A.index(x))
Run Code Online (Sandbox Code Playgroud)
另请注意,您不需要set(B)用于交集。
| 归档时间: |
|
| 查看次数: |
2357 次 |
| 最近记录: |