我只想在两个列表中提取索引,它们等于某个字符串。
说:
a = ['foo' for _ in range(5)]
a.extend(['bar' for _ in range(5)])
print(a)
['foo', 'foo', 'foo', 'foo', 'foo', 'bar', 'bar', 'bar', 'bar', 'bar']
b = ['foo' for _ in range(3)]
b.extend(['bar' for _ in range(7)])
print(b)
['foo', 'foo', 'foo', 'bar', 'bar', 'bar', 'bar', 'bar', 'bar', 'bar']
然后我只想要所有指数与' foo'在列表a和'栏中'在列表b中,应为[3,4]
index = (a == 'foo') & (b == 'bar')
不像在numpy数组中那样工作。我该如何工作? 非常感谢!!
答案 0 :(得分:4)
使用enumerate
函数迭代,过滤掉foo
的所有元素,只获得它们的索引,就像这样
>>> [index for index, item in enumerate(a) if item == "foo"]
[0, 1, 2, 3, 4]
编辑后,问题发生了巨大变化。但是这个解决方案可行吗
>>> a = ['foo', 'foo', 'foo', 'foo', 'foo', 'bar', 'bar', 'bar', 'bar', 'bar']
>>> b = ['foo', 'foo', 'foo', 'bar', 'bar', 'bar', 'bar', 'bar', 'bar', 'bar']
>>> [idx for idx, values in enumerate(zip(a, b)) if values == ("foo", "bar")]
[3, 4]