Jak działa Python pod maską? Stosuj w przypadku pytań dotyczących (na przykład) podjętych decyzji projektowych oraz wewnętrznych struktur danych i zastosowanych algorytmów.
range(10**6)Dziesięciokrotne skopiowanie potasowanej listy zajmuje mi około 0,18 sekundy: (to jest pięć uruchomień) 0.175597017661 0.173731403198 0.178601711594 0.180330912952 0.180811964451 Dziesięciokrotne skopiowanie nieprzetasowanej listy zajmuje mi około 0,05 sekundy: 0.058402235973 0.0505464636856 0.0509734306934 0.0526022752744 0.0513324916184 Oto mój kod testowy: from timeit import timeit import random a = range(10**6) random.shuffle(a) # Remove this for …
Po zanurzeniu się w kodzie źródłowym Pythona stwierdzam, że utrzymuje on tablicę PyInt_Objects odint(-5) do int(256)(@ src / Objects / intobject.c) Mały eksperyment to potwierdza: >>> a = 1 >>> b = 1 >>> a is b True >>> a = 257 >>> b = 257 >>> a is b …
Więc bawiłem się listobiektami i znalazłem małą dziwną rzecz, która jeśli listzostanie utworzona za pomocą list()tego, zużywa więcej pamięci niż rozumienie listy? Używam Pythona 3.5.2 In [1]: import sys In [2]: a = list(range(100)) In [3]: sys.getsizeof(a) Out[3]: 1008 In [4]: b = [i for i in range(100)] In [5]: …
Próbując zrozumieć pętlę for Python, pomyślałem, że da to wynik {1}dla jednej iteracji lub po prostu utknę w nieskończonej pętli, w zależności od tego, czy wykonuje iterację jak w C lub w innych językach. Ale w rzeczywistości tak nie było. >>> s = {0} >>> for i in s: ... …
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.