如何查找相同项的列表索引

时间:2017-06-30 05:05:01

标签: python list indexing

我有这个清单

list = ['c', 'h', 'a', 'l', 'l', 'e', 'n', 'g', 'e']

然而,当我调用list.index(" e")时,它只返回第一个索引。有没有办法返回两个索引?

3 个答案:

答案 0 :(得分:3)

你可以这样做:

>>> list_ = ['c', 'h', 'a', 'l', 'l', 'e', 'n', 'g', 'e']
>>> [index for index, value in enumerate(list_) if value == 'e']

相当于:

list_ = ['c', 'h', 'a', 'l', 'l', 'e', 'n', 'g', 'e']

result = []
for index, value in enumerate(list_):
    if value == 'e:'
        result.append(index)

前一个示例(列表推导)比显式for循环更紧凑,更快。这是因为在列表上调用.append()会导致列表对象增长(以块为单位)以单独为新元素腾出空间,而列表理解在创建列表之前首先收集所有元素以便一次性拟合元素。

作为一个函数,更通用的是,您希望索引的元素可能会发生变化:

def get_all_indexes(list_, element):
    return [index for index, value in enumerate(list_) if value == element]

print(get_all_indexes(['c', 'h', 'a', 'l', 'l', 'e', 'n', 'g', 'e'], 'e'))

答案 1 :(得分:2)

我会做这样的事情,使用列表理解,请注意不要使用public void waitForElementPresent(final By by, int timeout){ WebDriverWait wait = (WebDriverWait)new WebDriverWait(driver,timeout) .ignoring(StaleElementReferenceException.class); wait.until(new ExpectedCondition<Boolean>(){ @Override public Boolean apply(WebDriver webDriver) { WebElement element = webDriver.findElement(by); return element != null && element.isDisplayed(); } }); } 作为变量名称:

=DateAdd("d", -1 * (weekday(today()) mod 7 ), today())

答案 2 :(得分:1)

或者你可以使用numpy

import numpy as np
list = ['c', 'h', 'a', 'l', 'l', 'e', 'n', 'g', 'e']
np.where(np.array(list)=="e")

如果你想将它列入清单,你可以使用

np.where(np.array(list)=="e")[0].tolist()

我强烈建议你不要把你的变量关键字叫做list,dict?只需将其命名为my_list或其他名称