首页 > 解决方案 > Python如何在列表X中搜索元素Y。元素Y本身就是一个列表,其元素可能与X中列出的顺序不同

问题描述

我有一个清单:

X = ['rgb','rg870','rg1200','rg1550']

我的第二个清单是:

Y = [870,r,g]

即使顺序不匹配,我也想在X列表中搜索列表的组合并返回元素索引。Y

这应该返回1的索引。#至少我认为它作为第一个元素的位置1是0?

标签: python

解决方案


试试这个:

import numpy as np

X = ['rgb','rg870','rg1200','rg1550']

Y = ['870','r','g']

result = np.where([sorted(''.join(Y))==sorted(x) for x in X])[0]
print(result)

代码说明:

  • ''.join(Y)使您从列表移动Y到所有元素由空字符分隔的字符串。
  • sorted(''.join(Y))订购您新创建的字符串。
  • sorted(x)以相同的方式订购x,这是通过X列表理解迭代的一个元素。
  • 通过比较已排序的字符串,您可以确保 的所有字符Y都包含在相同编号的元素x中,即使原始顺序不同。
  • 使用np.where(_)搜索匹配发生的位置。由于通常np.where用于矩阵,因此您只需选择第一个元素:np.where(_)[0].
  • 最后,您打印您的结果,这是匹配发生的位置列表。如果您确定只发生一个匹配,那么您可以简单地提取它result = np.where(_)[0][0],从而获取结果列表中的第 0 个元素。

推荐阅读