Parfois, je veux tourner une instruction for et utiliser un tableau comme FIFO. Il semble qu'il y ait une file d'attente en Python, mais comme je travaille avec des modèles de travail tels que Javascript, MATLAB, Objective-C et Java en même temps, je veux vraiment écrire avec le même code.
Cette fois, je me suis vraiment intéressé à Python. Je ne pense pas que pop et append soient mauvais, mais peut-être que certaines personnes l'implémenteront en utilisant pop et append de la même manière, alors prenez note.
Ce que je voulais faire cette fois, c'est obtenir un tableau qui est décalé d'un caractère du tableau qui est organisé comme [1,2,3,4,5,6,7,8,9,10], et ce qui suit Faites une ligne comme celle-ci.
Donc, cette fois, je l'ai écrit en Python, et c'est le code qui convient parfaitement. (Ce code est simplifié et vous n'avez pas à l'écrire comme ça, mais vous deviez écrire le code original comme ça)
data_array=[1,2,3,4,5,6,7,8,9,10]
A=[]
R=[]
for i in range(10):
if(len(A)<5):
A.append(data_array[i])
else:
R.append(A)
A.pop(0)
A.append(data_array[i])
L'idée est que les 5 premiers caractères doivent être ajoutés normalement, et après cela, pop et append doivent être utilisés pour créer un tableau de type FIFO et l'ajouter.
Cependant, le résultat est misérablement en dessous.
Hmm! ?? Vous sautez correctement, non? Ajouter, non? ?? quelle! ?? J'avais l'impression d'être tempéré, mais j'ai fait une erreur rudimentaire à laquelle je devais faire attention en Python. Vous devez faire attention à la mémoire de la matrice.
Les détails sont présentés en détail ici. http://qiita.com/utgwkk/items/5ad2527f19150ae33322
Voici donc le bon code. Il semble que vous deviez le déplacer vers une autre mémoire avec copy.deepcopy
.
import copy
data_array=[1,2,3,4,5,6,7,8,9,10]
A=[]
R=[]
for i in range(10):
if(len(A)<5):
A.append(data_array[i])
else:
temp_data = copy.deepcopy(A)
R.append(temp_data)
A.pop(0)
A.append(data_array[i])
Recommended Posts