Mam dokument z wieloma stronami i próbuję wyodrębnić pierwsze 3 wiersze z każdej strony.
Robię to, a moje wyniki to wiele list, na przykład:
['hello','','data']
['hello','','data']
['test','','data']
Chcę usunąć wszystkie pasujące listy, na przykład strona 1 i strona 2 mają te same 3 wiersze. Chcę usunąć te 3 wiersze z oryginalnego dokumentu dla odpowiednich stron. Jak mogłem się tym zająć?
Do tej pory próbowałem użyć funkcji set and intersection. Przykład:
for item in line_list:
common = list(set(line_list[0]).intersection(line_list[2:]))
print (common)
Dostaję tylko puste listy. Myślę, że może to być moja składnia, ale nie jestem pewien. Czy ktoś może doradzić?
3 odpowiedzi
set.intersection
nie przyjmuje iterowalnych elementów iterowalnych (które wygląda na to, że próbujesz przekazać), ale zezwala na dowolną liczbę argumentów, które według niego będą iterowalne.
Próbować:
common = list(set(line_list[0]).intersection(*line_list[2:]))
Aby uzyskać więcej informacji o tym, co robi *
, wyszukaj w Google hasło „splat operator python”.
set.intersection
, abyś przynajmniej mógł właściwie ocenić jego przydatność w konkretnej sytuacji.
W Pythonie istnieje funkcja o nazwie set
, która zwraca kolekcję z unikalnymi wartościami lub krotkami listy. Problem w tym, że masz listę list. Aby to zrobić, musisz przekształcić swoją listę w krotkę, następnie użyć set, aby uzyskać unikalne listy, a następnie przekształcić ją ponownie w listę. I tak to się robi:
a = ['hello','','data']
b = ['hello','','data']
c = ['test','','data']
common = [list(x) for x in set(tuple(x) for x in [a, b, c])]
Zakładając, że wiesz, gdzie jest duplikat, możesz w inteligentny sposób pozbyć się nadmiarowości. Możesz użyć polecenia readlines ():
lines_without_redundancy = all_lines[3::]
Podobne pytania
Nowe pytania
python
Python to wielozadaniowy, wielozadaniowy język programowania dynamicznie typowany. Został zaprojektowany tak, aby był szybki do nauczenia się, zrozumienia i użycia oraz wymuszania czystej i jednolitej składni. Należy pamiętać, że Python 2 oficjalnie nie jest obsługiwany od 01-01-2020. Mimo to, w przypadku pytań Pythona specyficznych dla wersji, dodaj znacznik [python-2.7] lub [python-3.x]. Korzystając z wariantu Pythona (np. Jython, PyPy) lub biblioteki (np. Pandas i NumPy), należy umieścić go w tagach.
['test','','data']
, ta lista może pozostać, a pętla sprawdzi następną stronę dokumentu