2017-06-19 1 views
0

Ich gebe mehr als 13.000 Elemente von der Standardeingabe ein, aber beim Drucken der Länge der Liste zeigt es, dass es nur 2048 Elemente darin hat. Wieso ist es so? Hat es irgendwie mit der Größe des Eingabepuffers zu tun?Python-Listeneingabe von stdin dauert nur 2048 Elemente

+1

Wie sieht Ihre Eingabe aus? Wie kommst du daran vorbei? (Denken Sie daran, dass 'raw_input()' nur eine Zeile liest - verwenden Sie 'sys.stdin.read() ', wenn Sie die gesamte stdin erhalten wollen.) – Ryan

+0

Nicht sicher, ob es einen Unterschied macht, aber Sie könnten den stdin-Puffer erhöhen Größe. –

Antwort

0

Sie in Erwägung ziehen könnte eine Eingabe von stdin Zeile für Zeile zu lesen:

import sys 

for line in sys.stdin: 
    print line 

Or (Ryan-Lösung)

sys.stdin.read() 

Eine weitere Alternative ist das fileinput Modul zu verwenden:

import fileinput 

for line in fileinput.input(): 
    pass 

Sie müssen die Eingabe mit einem Ctrl+C beenden, um EOF zu signalisieren.


Source.

+0

Ich bin ein Problem auf einem Online-Richter zu lösen, so dass die Eingabe in einer einzigen Zeile vorhanden ist. – Erick

+0

Ist das nicht die Schuld des Online-Richters? Die schlaue Sache wäre, eine Eingabedatei zu übergeben und die Eingabe nicht in stdin zu speichern. Abgesehen davon, hast du Ryans Vorschlag versucht? 'sys.stdin.read()' –