Czytam duży plik z setkami tysięcy par liczbowych reprezentujących krawędzie wykresu. Podczas tworzenia chcę tworzyć dwie listy: jedną z przednimi i jedną z odwróconą.Twórz 2 listy za jednym razem podczas odczytu z pliku, pythonowo
Obecnie robię wyraźną pętlę for
, ponieważ muszę wykonać pewne wstępne przetwarzanie na liniach, które przeczytałem. Zastanawiam się jednak, czy istnieje bardziej pythonic podejście do budowania tych list, takich jak listy zrozumienia, itp.
Ale, jak mam 2 listy, nie widzę sposobu, aby wypełnić je za pomocą zrozumienia bez czytania plik dwa razy.
Moje kodu teraz to:
with open('SCC.txt') as data:
for line in data:
line = line.rstrip()
if line:
edge_list.append((int(line.rstrip().split()[0]), int(line.rstrip().split()[1])))
reversed_edge_list.append((int(line.rstrip().split()[1]), int(line.rstrip().split()[0])))
Właśnie robię 'rstrip()', aby usunąć końcowe znaki '\ r \ n' w pustych wierszach. Bez niego twój kod jest pomyłki z 'i, j = map (int, spl) ValueError: niewystarczające wartości do rozpakowania (oczekiwane 2, ale otrzymałeś 0)' –
@NickSlavsky, to powinno być 'if spl', spl będzie pusty dla wszystkich linii z tylko białymi odstępami –
whoops, sam tego nie wymyśliłem. Dziękuję Ci! Nawiasem mówiąc, twoje rozwiązanie okazało się prawie 2 razy szybsze niż mój początkowy kod ze zbędnymi podziałami. –