Étant donné une liste:
from itertools import combinations def colocate(mylist,pairs=4,window=6): x = list(combinations(range(window),pairs)) y = [z for z in x if z[0]==0] for item in y: print(item)
3 Réponses :
"combinaison" est un concept en mathématiques liés à votre question. Cela ne se soucie pas de "fenêtre de 4" cependant.
(1, 6, 4) (1, 6, 9) (1, 6, 2) (1, 4, 9) (1, 4, 2) (1, 9, 2) (6, 4, 9) (6, 4, 2) (6, 9, 2) (4, 9, 2)
Je veux compter le nombre de fois les éléments apparaissent proches les uns des autres, pas exactement côte à côte. Ainsi fournie une taille de fenêtre coulissante, trouvez toutes les paires «dans l'ordre» dans une taille de paire donnée.
Cela devient assez proche. Il y aura des doublons produits, mais c'est ce que set (...) code> est pour finir ... devrait vous donner des idées de toute façon.
C'est essentiellement exactement ce que j'étais au milieu de l'écriture. La fenêtre code> de fenêtre code> sélectionne l'entrée sur combinaisons code>,
combinaisons code> obtient toutes les sélections non contiguës commandées à partir de chaque fenêtre. Vous pouvez conserver l'ordre de la première apparition pour chaque résultat en modifiant
Set (...) code> à la liste
(dict.fromkeys (...)) code> (Utiliser
collections .Ordinoteddict.Fromkeys Code> Avant Python 3.6), bien que cela suppose que vous ne voulez pas voir un dupliquer même s'il provient de Windows non liés.
Un moyen assez simple de le faire est d'y réfléchir en termes d'index plutôt que de l'article de liste lui-même. Commencez par:
[[1, 6, 4], [1, 6, 9], [1, 4, 9], [6, 4, 9], [6, 4, 2], [6, 9, 2], [4, 9, 2]]
"Toutes les paires de 3 articles consécutifs dans une fenêtre de 4" ajoutent complètement des chances avec la définition de "consécutive"
articles consécutifs avec des lacunes i>? Peut-être que cela pourrait vous aider si vous pouviez prendre un pas en arrière et expliquer ce dont vous avez besoin cela.
Désolé si consécutif n'est pas le bon vocabulaire, je ne cherche pas des combinaisons. La commande compte, mais les articles ne doivent pas être parfaitement à côté de l'autre. Donc, c'est plus comme ordonné des permutations à l'intérieur d'une fenêtre.