Konstrukcja składniowa zapewniająca zwięzły sposób tworzenia list w stylu podobnym do matematycznej notacji konstruktora zestawów. Ponieważ kilka języków obsługuje wyrażenia listowe, należy używać tego tagu w połączeniu ze znacznikiem języka programowania.
Załóżmy, że mam taką listę: mylist = ["a","b","c","d"] Aby uzyskać wydrukowane wartości wraz z ich indeksem, mogę użyć enumeratefunkcji Pythona w ten sposób >>> for i,j in enumerate(mylist): ... print i,j ... 0 a 1 b 2 c 3 d >>> Teraz, kiedy próbuję użyć go wewnątrz a list comprehension, …
Mam trochę list składanych w Pythonie, w których każda iteracja może zgłosić wyjątek. Na przykład , jeśli mam: eggs = (1,3,0,3,2) [1/egg for egg in eggs] W ZeroDivisionErrortrzecim elemencie dostanę wyjątek. Jak mogę obsłużyć ten wyjątek i kontynuować przetwarzanie listy? Jedyny sposób, jaki przychodzi mi do głowy, to użycie funkcji …
Zrozumienia mają nieoczekiwane interakcje z określaniem zakresu. Czy to jest oczekiwane zachowanie? Mam metodę: def leave_room(self, uid): u = self.user_by_id(uid) r = self.rooms[u.rid] other_uids = [ouid for ouid in r.users_by_id.keys() if ouid != u.uid] other_us = [self.user_by_id(uid) for uid in other_uids] r.remove_user(uid) # OOPS! uid has been re-bound by the …
Chciałbym wiedzieć, czy istnieje lepszy sposób na wydrukowanie wszystkich obiektów na liście w Pythonie niż ten: myList = [Person("Foo"), Person("Bar")] print("\n".join(map(str, myList))) Foo Bar Czytam w ten sposób, nie jest to dobre: myList = [Person("Foo"), Person("Bar")] for p in myList: print(p) Czy nie ma czegoś takiego: print(p) for p in …
Pomyśl o funkcji, którą wywołuję ze względu na jej skutki uboczne, a nie zwracanie wartości (jak drukowanie na ekranie, aktualizacja GUI, drukowanie do pliku itp.). def fun_with_side_effects(x): ...side effects... return y Teraz, czy Pythonic ma używać wyrażeń listowych do wywoływania tej funkcji: [fun_with_side_effects(x) for x in y if (...conditions...)] Zauważ, …
Chcę porównać 2 iterowalne i wydrukować elementy, które pojawiają się w obu iterowalnych. >>> a = ('q', 'r') >>> b = ('q') # Iterate over a. If y not in b, print y. # I want to see ['r'] printed. >>> print([ y if y not in b for y …
Czy forpętle są naprawdę „złe”? Jeśli nie, w jakiej sytuacji byłyby one lepsze niż stosowanie bardziej konwencjonalnego podejścia „wektoryzowanego”? 1 Jestem zaznajomiony z pojęciem „wektoryzacji” i jak pandy wykorzystują techniki wektoryzacji, aby przyspieszyć obliczenia. Funkcje wektoryzowane rozgłaszają operacje w całej serii lub ramce DataFrame, aby uzyskać znacznie większe przyspieszenia niż …
Jak masz przerwać rozumienie bardzo długiej listy? [something_that_is_pretty_long for something_that_is_pretty_long in somethings_that_are_pretty_long] Widziałem też gdzieś ludzi, którzy nie lubią używać znaku '\' do przerywania linii, ale nigdy nie rozumieli dlaczego. Jaki jest tego powód?
Mam dwie listy, jak poniżej tags = [u'man', u'you', u'are', u'awesome'] entries = [[u'man', u'thats'],[ u'right',u'awesome']] Chcę wpisów wyciąg z entrieskiedy są w tags: result = [] for tag in tags: for entry in entries: if tag in entry: result.extend(entry) Jak mogę zapisać te dwie pętle jako jedno wierszowe rozumienie …
Aby zrobić odpowiednik list składanych w Pythonie, wykonuję następujące czynności: some_array.select{|x| x % 2 == 0 }.collect{|x| x * 3} Czy jest lepszy sposób na zrobienie tego ... może za pomocą jednego wywołania metody?
Rozważmy następujący kod Pythona, za pomocą którego dodaję nowe list2wszystkie elementy o indeksach od 1 do 3 list1: for ind, obj in enumerate(list1): if 4 > ind > 0: list2.append(obj) Jak byś to napisał, używając funkcji rozumienia list, skoro nie mam dostępu do indeksów poprzez wyliczanie? coś jak: list2 = …
Czy jest możliwe zwrócenie 2 (lub więcej) pozycji dla każdej pozycji w zrozumieniu listy? Czego chcę (przykład): [f(x), g(x) for x in range(n)] powinien wrócić [f(0), g(0), f(1), g(1), ..., f(n-1), g(n-1)] Więc coś, co zastąpi ten blok kodu: result = list() for x in range(n): result.add(f(x)) result.add(g(x))
Bawię się ze zrozumieniem list i natknąłem się na ten mały fragment na innej stronie: return ''.join([`num` for num in xrange(loop_count)]) Spędziłem kilka minut próbując odtworzyć funkcję (wpisując), zanim zdałem sobie sprawę, że `num`bit ją psuje. Co robi umieszczenie oświadczenia w tych znakach? Z tego, co widzę, jest to odpowiednik …
Jeśli mam rozumienie listy (na przykład) w ten sposób: ['' for x in myList] Efektywnie tworząc nową listę, która ma pusty ciąg dla każdego elementu na liście, nigdy nie używam x. Czy istnieje bardziej przejrzysty sposób zapisania tego, abym nie musiał deklarować nieużywanej xzmiennej?
Dołączanie do listy: >>> ''.join([ str(_) for _ in xrange(10) ]) '0123456789' join musi mieć iterowalny plik. Najwyraźniej joinargumentem jest [ str(_) for _ in xrange(10) ]i jest to zrozumienie listy . Spójrz na to: >>>''.join( str(_) for _ in xrange(10) ) '0123456789' Otóż joinargumentem jest po prostu str(_) for …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.