python - 来自字符串列表的子数组

标签 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']

然后我只想要列表 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/

相关文章:

list - 方案:从列表中删除重复的号码

python - 如何修复我的 pandas 数据框中的索引,使其不只将值保持为零,而是增加值?

python - 在 Ubuntu Linux 上运行一个 python 文件

python - 我怎样才能缩短或清理这个Python代码?

python - 内置名称错误 : name 'guess' is not defined

python - 如何通过唯一索引对 pandas 列求和,然后重置总和?

python - 如何计算python列表中的连续重复项

python - 我如何将单词转换为 python 3 中的数字(自己的键和值)?

c# - 更新结构列表中的内容

python - 在 Python 2.7 中使用多个占位符格式化程序打印字符串