我只想提取两个列表中的索引,它们等于某个字符串。
说:
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']
然后我只想要列表 a 中带有 'foo' 和列表 b 中带有 'bar' 的所有索引,它们应该是 [3, 4]
index = (a == 'foo') & (b == 'bar')
不像 numpy 数组那样工作。我如何使这项工作? 多谢!! 😊
最佳答案
迭代 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]
关于python - 来自字符串列表的子数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27581185/