python取列表指定元素的多个索引
时间: 2023-08-31 16:10:08 浏览: 213
可以使用列表推导式和enumerate函数来获取指定元素的多个索引。
例如,假设有一个列表a = [1, 2, 3, 4, 1, 2, 3, 4],需要获取元素1的所有索引,可以使用如下代码:
```python
indices = [i for i, x in enumerate(a) if x == 1]
print(indices) # 输出 [0, 4]
```
代码解释:
- `enumerate(a)`:遍历列表a中的所有元素,同时返回每个元素的索引i和元素值x。
- `i for i, x in enumerate(a) if x == 1`:使用列表推导式,遍历列表a中的所有元素,如果元素值等于1,则将该元素的索引i添加到列表indices中。
- `print(indices)`:输出所有元素1的索引。
相关问题
python 找到列表中指定元素的索引
可以使用`index`方法来查找列表中指定元素的索引,如下所示:
```python
my_list = ['apple', 'banana', 'orange', 'pear']
index = my_list.index('orange')
print(index) # 输出:2
```
如果列表中不存在指定的元素,则会抛出`ValueError`异常。如果你想要查找多个相同元素的索引,则可以使用列表解析式,如下所示:
```python
my_list = ['apple', 'banana', 'orange', 'pear', 'orange']
indices = [i for i, x in enumerate(my_list) if x == 'orange']
print(indices) # 输出:[2, 4]
```
这里使用`enumerate`函数来获取每个元素的索引,然后使用列表解析式来查找所有等于指定元素的索引。
python列表删除多个指定索引的元素
可以使用 `pop()` 方法结合循环来删除多个指定索引的元素,具体实现如下:
```python
my_list = ['a', 'b', 'c', 'd', 'e', 'f']
indexes_to_remove = [1, 3, 5]
# 从后往前删除元素,这样才不会影响后续元素的索引值
for index in sorted(indexes_to_remove, reverse=True):
if index < len(my_list):
my_list.pop(index)
print(my_list) # 输出:['a', 'c', 'e']
```
其中,`sorted()` 函数默认是升序排列,而我们需要从后往前删除元素,所以需要加上 `reverse=True` 参数来实现降序排列。同时,我们还需要判断要删除的索引值是否超出了列表的范围,以避免 `IndexError` 异常。
阅读全文