Python: Select subset from list based on index set

前端 未结 5 1038
借酒劲吻你
借酒劲吻你 2020-12-12 15:54

I have several lists having all the same number of entries (each specifying an object property):

property_a = [545., 656., 5.4, 33.]
property_b = [ 1.2,  1.3         


        
5条回答
  •  攒了一身酷
    2020-12-12 16:33

    You could just use list comprehension:

    property_asel = [val for is_good, val in zip(good_objects, property_a) if is_good]
    

    or

    property_asel = [property_a[i] for i in good_indices]
    

    The latter one is faster because there are fewer good_indices than the length of property_a, assuming good_indices are precomputed instead of generated on-the-fly.


    Edit: The first option is equivalent to itertools.compress available since Python 2.7/3.1. See @Gary Kerr's answer.

    property_asel = list(itertools.compress(property_a, good_objects))
    

提交回复
热议问题