2017-03-23 1 views
-1

Ich bin ein Paar von Zahlen im Rahmen einer POST-Anforderung senden, die etwa wie folgt aussieht: /updateDB?id=001&numbers=1,2,3,4,5,6Wie Elemente in Python koppeln und sie in Array schiebt in einem anderen Array

Auf der Serverseite in Python, ich mit diesen Parametern bin immer:

objectID = request.args.get('id') 
myNumbers = request.args.get('numbers') 

ich diese Zahlen koppeln möchten, legen sie sie in ihre einzelnen Felder, und legen sie dann diese Arrays in einem anderen Array.

Zum Beispiel möchte ich 1 und 2, 3 und 4 und 5 und 6 paaren und sie in ihre eigenen Arrays (also insgesamt 3 Arrays) platzieren. Sobald das erledigt ist, möchte ich diese 3 Arrays in ein anderes Array platzieren.

[ 
    [1,2] 
    [3,4] 
    [5,6] 
] 

Ich habe versucht, ein for-Schleife zu schreiben myNumbers zu durchlaufen:

for x in myNumbers: 
    print myNumbers(x) 

Aber ich habe den Fehler, dass unicode object is not callable. Ich schätze, das liegt daran, dass zwischen den Zahlen Kommas stehen?

+0

ich glaube, Sie bedeuten 'GE T' Anfrage dort. Wie auch immer, der Fehler liegt darin, dass Sie versuchen, über ein "String" Unicode-Objekt zu iterieren. Du kannst die 'args' wie' request.args.get ('numbers') teilen. Split (',') ' –

+0

@ kiran.koduru Danke, ich untersuche es. – mapr

+0

@ kiran.koduru Nicht verwandt, aber sollte ich nicht POST beim Senden von Daten die Datenbank verwenden? – mapr

Antwort

1
[list(pair) for pair in zip(myNumbers[::2], myNumbers[1::2])] 

in der Struktur führen Sie für

+0

Dies ist eine großartige Methode, aber es wandelt die Zahlen in Strings um? Wahrscheinlich, weil die Zahlen als Strings gesendet werden. – mapr

+0

@maprYour myNumbers ist höchstwahrscheinlich eine Zeichenfolge. Überprüfen Sie 'type (myNumbers)'. Wenn es eine Zeichenkette wie "1,2,3,4,5,6" ist, müssen Sie es durch 'myNumbers.split (',')' teilen 'erzeugt ein Array von Zeichenketten dh [" 1 "," 2 "," 3 "," 4 "," 5 "," 6 "]. Um ein int-Array zu erhalten, müssen Sie sie einem int für zB 'map (int, myNumbers.split (',')) zuordnen' und dann die Methode in dieser Antwort verwenden. – Anoop

+0

Sie werden als Unicode gesendet, so dass das Addieren endet ein "u" vor den Zahlen, so: [[u '1', u2 '], [u'3', u4 '], [u5', u6 '] ]]. Ich werde die von dir vorgeschlagene Methode ausprobieren. – mapr

0

hier suchen, ist Probe für Python 3:

def pair_list(original_list): 
    new_big_list=[] 
    for i in range(0,len(original_list)-1, 2): 
     new_big_list.append([original_list[i],original_list[i+1]]) 
    return new_big_list 

if __name__ == '__main__': 
    test_list=[1,2,3,4,5,6] 
    print(pair_list(test_list)) 

der Ausgang sein wird: [[1, 2], [3, 4], [5, 6]]

Änderungsbereich xrange, wenn Sie in Python sind 2,7

+0

Da die Zahlen als Zeichenfolgen gesendet werden, wie kann ich sicherstellen, dass sie int() oder float() sind, sobald die Ausgabe abgeschlossen ist? – mapr

+0

Ich glaube, es funktioniert für String, Int und Float. spielt keine Rolle Datentyp. – Windchill

Verwandte Themen