代码之家  ›  专栏  ›  技术社区  ›  Stefano Borini

如何使用Python中的索引从列表中提取元素?

  •  30
  • Stefano Borini  · 技术社区  · 14 年前

    如果您在python中有一个列表,并且想要将索引(比如1、2和5)处的元素提取到一个新的列表中,该怎么做?

    我就是这样做的,但我不太满意

    >>> a
    [10, 11, 12, 13, 14, 15]
    >>> [x[1] for x in enumerate(a) if x[0] in [1,2,5]]
    [11, 12, 15]
    

    有更好的办法吗?

    更一般地说,给定一个具有索引的元组,如何使用该元组从列表中提取相应的元素,最终使用重复(例如,tuple(1,1,2,1,5)生成[11,11,12,11,15])

    5 回复  |  直到 7 年前
        1
  •  65
  •   unutbu    14 年前

    也许可以使用这个:

    [a[i] for i in (1,2,5)]
    # [11, 12, 15]
    
        2
  •  6
  •   lugte098    14 年前

    我想你在找这个:

    elements = [10, 11, 12, 13, 14, 15]
    indices = (1,1,2,1,5)
    
    result_list = [elements[i] for i in indices]    
    
        3
  •  5
  •   Juho Vepsäläinen    14 年前

    尝试

    numbers = range(10, 16)
    indices = (1, 1, 2, 1, 5)
    
    result = [numbers[i] for i in indices]
    
        4
  •  3
  •   Dmitri    9 年前

    使用numpy直接数组索引,如matlab,julia,…

    a = [10, 11, 12, 13, 14, 15];
    s = [1, 2, 5] ;
    
    import numpy as np
    list(np.array(a)[s])
    # [11, 12, 15]
    

    更好的是,只需使用numpy数组

    a = np.array([10, 11, 12, 13, 14, 15])
    a[s]
    #array([11, 12, 15])
    
        5
  •  2
  •   Charles Beattie    14 年前

    检查边界:

     [a[index] for index in (1,2,5,20) if 0 <= index < len(a)]
     # [11, 12, 15]