0
votes

Liste de partition par indices

Il y a donc une liste list = ['A', 'B', 'C', 'D', 'E'] CODE> et une liste d'indices indices = [1 , 2, 4] code>.

Je veux partitionner la liste dans deux listes: une contenant les éléments aux indices code> ( ['B', 'C', 'E'] CODE>) et un contenant tous les autres éléments ( ['a', 'd' code>). p>

pour la première liste J'ai déjà une solution simple. P>

    Indices = np.array(Indices)
    List = np.array(List)
    In_List = list(List[Indices])
    Out_List = list(np.delete(List, Indices))


2 commentaires

OUT_LIST = [LISTE [I] POUR I TRIED (SET (Plage (LEN (LISTE)) - SET (INDICES))]


Si vous avez une solution de travail et que vous souhaitez l'améliorer, envisagez de demander à codereview.stackexchange.com


5 Réponses :


3
votes

Ce n'est pas plus elgant, mais au moins vous évitez de courir deux pour les boucles (qui est assez inefficace si vous traitez avec beaucoup de données).

import numpy as np
Indices = np.array(Indices)
List = np.array(List)
In_List = List[Indices]
Out_List = np.delete(List, Indices) 


0 commentaires

0
votes

Vous pouvez obtenir le même résultat avec une seule analyse de votre à l'aide de la méthode énumérer : xxx p> Ce serait même Plus efficace si votre variable variable était un définir au lieu d'une liste .


0 commentaires

0
votes

Vous pouvez utiliser l'élément d'élément du module opérateur: xxx

sortie: xxx


0 commentaires

1
votes

Ceci fonctionnerait également: xxx

où j'utilise i dans indices comme index pour le tuple imbriqué RET puis le décompressez-le. Dans la dernière ligne pour obtenir in_list et out_list .


0 commentaires

0
votes

Utilisation d'un masque booléen numpy (avec np.in1d ​​): xxx


0 commentaires