Supposons que je génère une liste de manière aléatoire. maintenant in Le début La liste peut être dans un état lorsque le nombre de -1 est supérieur au nombre de + 1, puis transition de l'état où le nombre de + 1 est supérieur au nombre de -1. p> est-il moyen de compter le nombre de fois qu'une telle transition est faite? En plus de cela, serait-il possible d'enregistrer les valeurs de x lorsqu'une telle transition est effectuée dans une liste. P> Jusqu'à présent, j'ai essayé de tracer ces données par rapport à p> pour x dans la plage (0.100) code>. Je modifie les éléments en fonction des règles, puis comptez le nombre d'éléments de chaque type, à l'aide de compte = compteur (myList) code> p> p = counts[1]
m = counts[-1]
plt.plot(x, p,m)
plt.show()
3 Réponses :
import random
mylist = []
new_list = list(mylist)
transitions = []
for x in range(0,100):
mylist.append(random.choice([1, 0, -1])) # some rules, which change mylist
is_trans1 = new_list.count(1) > new_list.count(-1) and mylist.count(1) < mylist.count(-1)
is_trans2 = new_list.count(1) < new_list.count(-1) and mylist.count(1) > mylist.count(-1)
if is_trans1 or is_trans2:
transitions.append(x)
new_list = list(mylist) # save mylist for the next iteration
Si vous êtes uniquement intéressé par quel élément est le plus courant dans votre liste, alors Il favorise automatiquement l'élément le plus courant (ainsi que son compte) pour être le premier élément de la liste retournée. Voici quelques retours voisins autour d'un point de transition: p> compteur code> a une fonction intégrée la fonction code> la fonction que vous pouvez interroger: < Pré> xxx pré>
Cette réponse suppose que vous essayez de compter uniquement une transition et n'essayez pas de tracer des valeurs (dernier paragraphe de la question).
Si vous traitez uniquement d'un Et bien sûr, il est plus facile de ne pas résumer la liste complète à chaque fois, mais juste incrémenter / décrémenter un compteur dans votre bloc logique lorsque des modifications se produisent. P> {- 1, 0, 1} code> définit, vous pouvez peut-être résumer une valeur d'une liste. C'est un peu plus rapide que les ajoutez-les à compter et vous donne une information de transition. P> transitions_history
Out:
[(1, 'neg_to_pos', [0, 1]),
(9, 'pos_to_neg', [0, 1, 1, 1, -1, -1, -1, -1, -1]),
(14, 'neg_to_pos', [0, 1, 1, 1, -1, -1, -1, -1, -1, 1, 1, 1, 1, 1])]
transition_counter
Out:
3