Przepraszamy za niewyraźny tytuł, ale trudno to wyjaśnić zwięźle.Najlepszy sposób na podzielenie każdego n-tego elementu ciągu i scalenie w tablicy?
Zasadniczo wyobrazić Mam listę (w Pythonie), który wygląda tak:
['a', 'b', 'c\nd', 'e', 'f\ng', 'h', 'i']
od tego, chcę uzyskać to:
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
jeden sposób myślałem o robi ten używał reduce
tak:
reduce(lambda x, y: x + y.split('\n'), lst, [])
Ale nie sądzę, że to jest bardzo wydajne, ponieważ nie korzysta z tego, że wiemy, że każdy n-ty element ma w sobie separator. Jakieś sugestie?
Edytuj: więcej informacji na temat budowy tablicy, co może być problemem.
Mam tekstu w postaci:
Ignorable line
Field name 1|Field name 2|Field name 3|Field name 4
Value 1|Value 2|Value 3|Value 4
Value 1|Value 2|Value 3|Value 4
...
Gdzie możemy mieć dowolną ilość nazw pól, a nie będzie zawsze taka sama liczba wartości jako nazwy pól w linii. Zauważ, że możemy mieć nowe linie w wartościach. Wiemy tylko, że będą oddzielone znakiem "|". Więc mogliśmy mieć
Value 1|This is an long
value that extends over multiple
lines|Value 3|Value 4
Jak obecnie zrobić to wykonując s.split('\n', 2)
tak, że otrzymujemy nazwy pól we własnym ciąg i wartości we własnym ciąg. Następnie, dzieląc wartości przez "|", otrzymujemy listę pierwotnie wspomnianej formy.
co masz na myśli każdy element n-ty ... to wygląda twoje n zmienia się z 3 na 2 ... poza tym prawdopodobnie dużo szybko ... chyba że tak naprawdę nie, ale w takim przypadku wiedziałbyś, że to było twoje wąskie gardło ....przedwczesna optymalizacja jest źródłem wszelkiego zła –
W przykładzie \ n zawsze następuje po trzecim elemencie (c jest trzecią literą alfabetu, f jest szóstą). Jestem ciekawy, co powoduje, że dostajesz pierwszą listę w tym formacie. Być może kod byłby czystszy, gdybyś zmienił sposób konstruowania oryginalnej listy ... to wygląda na obejście uszkodzonego parsera. – ramcdougal
@ramcdougal może się zdarzyć, że nie jest to najlepszy sposób na skonstruowanie tej listy. Zaktualizuję wiadomość o tym, jak ją otrzymałem w tej formie. – mp94