📜  Python|访问给定索引列表中的所有元素

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

Python|访问给定索引列表中的所有元素

在Python中,从其索引访问元素更容易,只需在列表中使用[]运算符就可以了。但是在某些情况下,当我们有不止一次索引时,我们会遇到任务,我们需要获取与这些索引对应的所有元素。让我们讨论实现此任务的某些方法。

Input : list = [9, 4, 5, 8, 10, 14]
        index_list = [1, 3, 4]
Output : 4 8 10

方法#1:使用列表推导
这个任务很容易用循环来执行,因此它的简写是从这个任务开始的第一种方法。遍历索引列表以从列表中获取相应的元素到新列表中是执行此任务的粗暴方法。

# Python3 code to demonstrate 
# to get elements from indices
# using list comprehension
  
# initializing lists
test_list = [9, 4, 5, 8, 10, 14]
index_list = [1, 3, 4]
  
# printing original lists
print ("Original list : " + str(test_list))
print ("Original index list : " + str(index_list))
  
# using list comprehension to 
# elements from list 
res_list = [test_list[i] for i in index_list]
      
# printing result
print ("Resultant list : " + str(res_list))

输出 :

Original list : [9, 4, 5, 8, 10, 14]
Original index list : [1, 3, 4]
Resultant list : [4, 8, 10]

方法 #2:使用map() + __getitem__
实现这一特定任务的另一种方法是将一个列表与另一个列表映射并获取索引项并从搜索列表中获取相应的匹配元素。这是执行此任务的非常快速的方法。

# Python3 code to demonstrate 
# to get elements from indices
# using map() + __getitem__
  
# initializing lists
test_list = [9, 4, 5, 8, 10, 14]
index_list = [1, 3, 4]
  
# printing original lists
print ("Original list : " + str(test_list))
print ("Original index list : " + str(index_list))
  
# using map() + __getitem__ to 
# elements from list 
res_list = map(test_list.__getitem__, index_list)
      
# printing result
print ("Resultant list : " + str(res_list))

输出 :

Original list : [9, 4, 5, 8, 10, 14]
Original index list : [1, 3, 4]
Resultant list : [4, 8, 10]

方法 #3:使用operator.itemgetter()
这种技术是执行此特定任务的最 Pythonic 和优雅的方法。此函数使用另一个所需的索引压缩原始列表的元素,因此是实现此任务的禁食方法。

# Python3 code to demonstrate 
# to get elements from indices
# using operator.itemgetter()
from operator import itemgetter
  
# initializing lists
test_list = [9, 4, 5, 8, 10, 14]
index_list = [1, 3, 4]
  
# printing original lists
print ("Original list : " + str(test_list))
print ("Original index list : " + str(index_list))
  
# using operator.itemgetter() to 
# elements from list 
res_list = list(itemgetter(*index_list)(test_list))
      
# printing result
print ("Resultant list : " + str(res_list))

输出 :

Original list : [9, 4, 5, 8, 10, 14]
Original index list : [1, 3, 4]
Resultant list : [4, 8, 10]