📜  Python - 列表中最多 K 个元素的索引

📅  最后修改于: 2022-05-13 01:55:16.497000             🧑  作者: Mango

Python - 列表中最多 K 个元素的索引

很多时候,我们可能会遇到需要查找索引而不是实际数字的问题,而且更多时候,结果是有条件的。想到的第一种方法可以是一个简单的索引函数,并获得小于或等于特定数字的索引,但这种方法在重复数字的情况下会失败。让我们讨论一些可以成功解决这个问题的方法。

方法#1:使用循环
这个问题可以很容易地使用循环和蛮力方法来解决,在这种方法中,我们可以在迭代时检查索引,并在继续前进时将其附加到新列表中。

# Python3 code to demonstrate
# Atmost K element indices
# using loop
  
# initializing list 
test_list = [12, 11, 7, 15, 8, 18]
  
# printing original list
print("The original list : " + str(test_list))
  
# using loop
# Atmost K element indices
res = []
for idx in range(0, len(test_list)) :
    if test_list[idx] <= 11:
        res.append(idx)
  
# print result
print("The list of indices at most 11 : " + str(res))
输出 :
The original list : [12, 11, 7, 15, 8, 18]
The list of indices at most 11 : [1, 2, 4]

方法 #2:使用列表理解 + enumerate()
这两个函数的组合也可以有效地在一条线上执行此特定任务。 enumerate函数用于同时获取元素及其索引。

# Python3 code to demonstrate
# Atmost K element indices
# using list comprehension + enumerate()
  
# initializing list 
test_list = [12, 11, 7, 15, 8, 18]
  
# printing original list
print("The original list : " + str(test_list))
  
# using list comprehension + enumerate()
# Atmost K element indices
res = [idx for idx, val in enumerate(test_list) if val <= 11]
  
# print result
print("The list of indices at most 11 : " + str(res))
输出 :
The original list : [12, 11, 7, 15, 8, 18]
The list of indices at most 11 : [1, 2, 4]