Manchmal möchte ich die for-Anweisung umdrehen und ein Array wie FIFO verwenden. Es scheint, dass es in Python eine Warteschlange gibt, aber da ich gleichzeitig mit Arbeitsmustern wie Javascript, MATLAB, Objective-C und Java zu tun habe, möchte ich definitiv mit demselben Code schreiben.
Diesmal habe ich mich wirklich mit Python beschäftigt. Ich denke nicht, dass Pop und Append schlecht sind, aber vielleicht werden einige Leute es mit Pop und Append auf die gleiche Weise implementieren, also machen Sie sich eine Notiz.
Dieses Mal wollte ich ein Array erhalten, das um ein Zeichen von dem Array verschoben ist, das wie [1,2,3,4,5,6,7,8,9,10] ausgerichtet ist, und das folgende Machen Sie eine Linie wie diese.
Dieses Mal habe ich es in Python geschrieben, und dies ist der Code, der gut passt. (Dieser Code ist vereinfacht und Sie müssen ihn nicht so schreiben, aber Sie mussten den Originalcode so schreiben.)
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])
Die Idee ist, dass die ersten 5 Zeichen normal angehängt werden sollten. Danach sollten Pop und Append verwendet werden, um ein FIFO-ähnliches Array zu erstellen und es hinzuzufügen.
Das Ergebnis liegt jedoch kläglich darunter.
Hmm! ?? Du knallst richtig, oder? Sie hängen an, richtig? ?? was! ?? Ich fühlte mich temperiert, aber ich machte einen rudimentären Fehler, bei dem ich in Python vorsichtig sein sollte. Sie müssen vorsichtig mit dem Speicher des Arrays sein.
Die Details werden hier ausführlich vorgestellt. http://qiita.com/utgwkk/items/5ad2527f19150ae33322
Hier ist also der richtige Code. Es scheint, dass Sie es mit copy.deepcopy
in einen anderen Speicher verschieben müssen.
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