字符串列表中的子数组

时间:2014-12-20 14:32:33

标签: python list python-3.x

我只想在两个列表中提取索引,它们等于某个字符串。

说:

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数组中那样工作。我该如何工作? 非常感谢!!

1 个答案:

答案 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]