簡體   English   中英

Python按索引選擇列表中的元素

[英]Python selecting elements in a list by indices

我在 python 中有一個列表,我想從中獲取一組索引並將其保存為原始列表的子集:

templist = [[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]]

我想要這個:

   sublist=[[1,    4,    7,                      16,      19,20]]

舉個例子。

我無法提前知道列表元素的內容是什么。 我所擁有的只是始終相同的索引。

有沒有單行方式來做到這一點?

使用operator.itemgetter

>>> templist = [[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]]
>>> import operator
>>> f = operator.itemgetter(0,3,6,15,18,19)
>>> sublist = [list(f(templist[0]))]
>>> sublist
[[1, 4, 7, 16, 19, 20]]

假設您知道要選擇的索引是什么,它的工作方式如下:

indices = [1, 4, 7, 16, 19, 20]
templist = [[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]]
sublist = []

for i in indices:
    sublist.append(templist[0][i])

這也可以用列表理解的形式表示——

sublist = [templist[0][i] for i in indices]

您可以在 enumerate 中使用列表理解:

indices = [1,2,3]
sublist = [element for i, element in enumerate(templist) if i in indices]

您可以使用列表理解:

indices = set([1,2,3])
sublist = [el for i, el in enumerate(orig_list) if i in indices]

或者您可以將索引存儲在 True/False 列表中並使用itertools.compress

indices = [True, False, True]
sublist = itertools.compress(orig_list, indices)
 mylist = ['A','B','C','D','E','F']
 idx = [0,1,3]
 [mylist[i] for i in idx]

['A', 'B', 'D']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM