Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python通过索引选择列表中的元素_Python_List_Indexing_Set - Fatal编程技术网

Python通过索引选择列表中的元素

Python通过索引选择列表中的元素,python,list,indexing,set,Python,List,Indexing,Set,我有一个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]] 举个例子 我无法提前知道列表元素的内容是什么。我所拥有的只是永远不变的指数 有没有一种单行的方法可以做到这一点?您可以将列表理解与枚举结合使用:

我有一个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]]
举个例子

我无法提前知道列表元素的内容是什么。我所拥有的只是永远不变的指数


有没有一种单行的方法可以做到这一点?

您可以将列表理解与枚举结合使用:

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]
或者,您可以将索引存储在真/假列表中,并使用
itertools.compress

indices = [True, False, True]
sublist = itertools.compress(orig_list, indices)

假设您知道要选择的索引是什么,它的工作原理如下:

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]

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

索引是如何存储的?你是什么意思?Python给列表中的每一个元素都赋予了它自己的索引?那么告诉我我是否理解正确:你有一个列表,你有一些索引,你想提取一个子列表,其中包含这些索引处的列表元素。是的,先生。它们分散在索引中,所以我怀疑
操作符不起作用,因为这是连续的元素选择。那么您如何知道要选择列表中的哪些索引呢?这根本不能回答OP的问题,这应该是另一个问题吗?
sublist = [templist[0][i] for i in indices]
 mylist = ['A','B','C','D','E','F']
 idx = [0,1,3]
 [mylist[i] for i in idx]