📜  Python|在列表中查找价值指数的方法

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

Python|在列表中查找价值指数的方法

通常,我们需要找到特定值所在的索引。有很多方法可以实现这一点,使用index()等。但有时需要找到特定值的所有索引,以防它在列表中多次出现。

让我们讨论在给定列表中查找价值索引的某些方法。

方法#1:朴素的方法

我们可以通过遍历列表并检查该值来完成此任务,然后将值索引附加到新列表中并打印出来。这是完成此任务的基本蛮力方法。

# Python3 code to demonstrate 
# finding indices of values
# using naive method 
  
# initializing list 
test_list = [1, 3, 4, 3, 6, 7]
  
# printing initial list 
print ("Original list : " + str(test_list))
  
# using naive method
# to find indices for 3
res_list = []
for i in range(0, len(test_list)) :
    if test_list[i] == 3 :
        res_list.append(i)
          
  
# printing resultant list 
print ("New indices list : " + str(res_list))
输出:
Original list : [1, 3, 4, 3, 6, 7]
New indices list : [1, 3]


方法#2:使用列表推导

列表推导只是实现蛮力任务的速记技术,只需使用较少的代码行即可完成任务,从而节省了程序员的时间。

# Python3 code to demonstrate 
# finding indices of values
# using list comprehension 
  
# initializing list 
test_list = [1, 3, 4, 3, 6, 7]
  
# printing initial list 
print ("Original list : " + str(test_list))
  
# using list comprehension
# to find indices for 3
res_list = [i for i in range(len(test_list)) if test_list[i] == 3]
          
# printing resultant list 
print ("New indices list : " + str(res_list))
输出:
Original list : [1, 3, 4, 3, 6, 7]
New indices list : [1, 3]


方法 #3:使用enumerate()
使用enumerate()我们可以完成类似的任务,这比上面的技术稍快,因此建议在列表理解技术上使用。

# Python3 code to demonstrate 
# finding indices of values
# using enumerate()
  
# initializing list 
test_list = [1, 3, 4, 3, 6, 7]
  
# printing initial list 
print ("Original list : " + str(test_list))
  
# using enumerate()
# to find indices for 3
res_list = [i for i, value in enumerate(test_list) if value == 3]
           
# printing resultant list 
print ("New indices list : " + str(res_list))
输出:
Original list : [1, 3, 4, 3, 6, 7]
New indices list : [1, 3]


方法 #4:使用filter()

这是另一种可用于完成此特定任务的方法, filter()通常能够执行过滤任务,因此也可以在这种情况下用于完成此任务。

# Python3 code to demonstrate 
# finding indices of values
# using filter()
  
# initializing list 
test_list = [1, 3, 4, 3, 6, 7]
  
# printing initial list 
print ("Original list : " + str(test_list))
  
# using filter()
# to find indices for 3
res_list = list(filter(lambda x: test_list[x] == 3, range(len(test_list))))
           
# printing resultant list 
print ("New indices list : " + str(res_list))
输出:
Original list : [1, 3, 4, 3, 6, 7]
New indices list : [1, 3]