python-internals
"kolejność" nieuporządkowanych zestawów Pythona
Rozumiem, że zestawy w Pythonie nie są uporządkowane, ale jestem ciekaw "kolejności", w jakiej są wyświetlane, ponieważ wydaj ... 'b', 'c', 'd'])
>>>> set_4
set(['a', 'r', 'b', 'c', 'd'])
Jestem ciekawa, dlaczego tak się stało. Jakaś pomoc?
Jak odwołania do zmiennych są rozwiązywane w Pythonie
Ta wiadomość jest trochę długa z wieloma przykładami, ale mam nadzieję, że
pomoże mi i innym lepiej zrozumieć pełną historię ... ()
f2()
>>>
x in myfunc
Dlaczego w w tym przypadku odniesienie x w MyClass jest sprawdzane w
najskrytsza funkcja?
O zmianie id niezmiennego łańcucha
Coś o id obiektach typu str (w Pythonie 2.7) mnie zastanawia. Typ str jest niezmienny, więc spodziewałbym się, że po jego utw ... o')
139978087896384
>>> id('hello')
139978087896384
>>> id('hello')
139978087896384
Teraz jest równe...
Poprawa wydajności bardzo dużego słownika w Pythonie
Stwierdzam, że jeśli zainicjalizuję pusty słownik na początku, a następnie dodam elementy do słownika w pętli for (około 110 ... ? Pamiętam, że jeśli znasz klucze, możesz mądrze zaprojektować funkcję hash (perfect hash?) i przeznaczyć wcześniej miejsce.
Dlaczego tuple (set ([1,"a","b","c","z","f"])) == tuple (set (["a","b","c","z","f",1])) 85% czasu z włączoną randomizacją skrótu?
Biorąc pod uwagę Zero odpowiedzi Pireusa na inne pytanie , Mamy To
x = tuple(set([1, "a", "b", "c", "z", "f"]))
y = tuple(set(["a", "b", "c", "z", "f", 1]))
print(x == y)
Drukuje True około 85% czasu z włączoną randomizacją skrótu . Dlaczego 85%?
Dlaczego kopiowanie tasowanej listy jest znacznie wolniejsze?
Kopiowanie tasowanej listy 10 razy zajmuje mi około 0,18 sekundy: (to jest 5 runów)
0.175597017661
0.173731403198
0.1786017 ... ego:
a = list(range(10**6))
random.shuffle(a)
a = list(a)
for _ in range(5):
print(timeit(lambda: list(a), number=10))
list() wykorzystuje więcej pamięci niż zrozumienie listy
Więc bawiłem się list obiektami i znalazłem małą dziwną rzecz, że jeśli list jest tworzony z list() to zużywa więcej pamięci, ... ;> import sys
>>> sys.getsizeof(list(xrange(100)))
1016
>>> sys.getsizeof([i for i in xrange(100)])
920
Jaki jest właściwy sposób nadpisania operacji kopiowania / deepcopy na obiekcie w Pythonie?
Więc tak dla ustalenia, czuję, że rozumiem różnicę między copy vs. deepcopy w module kopiowania i używałem copy.copy i copy.d ... ekcie w celu zapewnienia copy.copy i copy.deepcopy odpowiedniego zachowania? Obecnie używam Pythona 2.6.2.
Z góry dzięki!
Co powoduje, że [*a] nadmierny przydział?
Najwyraźniej list(a) nie nadalokuje, [x for x in a] nadalokuje w niektórych punktach, a [*a] nadalokuje cały czas?
Tutaj ... ódłowy?
(Colab z danymi i kodem , które tworzyły obrazy.)
Powiększenie do mniejszego n:
Powiększenie do większego n:
Dlaczego kod używając zmiennych pośrednich jest szybszy niż kod bez?
Spotkałam się z tym dziwnym zachowaniem i nie udało mi się tego wyjaśnić. Są to benchmarki:
py -3 -m timeit "tuple(range(20 ... Pythona z pętlami timeit.timeit() @ 10000 dało odpowiednio 0.703 i 0.804. Nadal pokazuje, choć w mniejszym stopniu. (~12.5%)
Jak wymiana członków w krotkach Pythona (a,b)=(b,a) działa wewnętrznie?
In [55]: a = 5
In [56]: b = 6
In [57]: (a, b) = (b, a)
In [58]: a
Out[58]: 6
In [59]: b
Out[59]: 5
Jak to zamiana wartości a i b działa wewnętrznie? Zdecydowanie nie używa zmiennej temp.
list() wykorzystuje nieco więcej pamięci niż zrozumienie listy
Więc bawiłem się list obiektami i znalazłem małą dziwną rzecz, że jeśli list jest tworzony z list() to zużywa więcej pamięci, ... ;> import sys
>>> sys.getsizeof(list(xrange(100)))
1016
>>> sys.getsizeof([i for i in xrange(100)])
920
Kiedy jest hash (n) == N w Pythonie?
Grałem w Pythona funkcja hash . Dla małych liczb całkowitych pojawia się hash(n) == n zawsze. Nie dotyczy to jednak dużych li ... , wydaje się, że hash Pythona 3 jest zawsze pozytywnie wyceniany, podczas gdy Hash Pythona 2 może przyjmować wartości ujemne.
operator 'is' zachowuje się nieoczekiwanie z nie buforowanymi liczbami całkowitymi
Podczas zabawy z interpreterem Pythona natknąłem się na ten sprzeczny przypadek dotyczący is operatora:
Jeśli ocena odbywa ... owitymi.
This isn ' t the case tutaj ponieważ liczby są poza tym przedziałem i chcę ocenić tożsamość i , a nie równość.
Dlaczego krotki zajmują mniej miejsca w pamięci niż listy?
A tuple zajmuje mniej miejsca w Pythonie:
>>> a = (1,2,3)
>>> a.__sizeof__()
48
Podczas gdy list S zajm ... mięci:
>>> b = [1,2,3]
>>> b.__sizeof__()
64
Co dzieje się wewnętrznie w zarządzaniu pamięcią Pythona?
Dlaczego w Pythonie są odwrócone i sortowane różne typy?
reversed'typ s to "typ": {]}
>>> type(reversed)
<class 'type'>
sorted'typ s to" wbudowana funkcja lub meto ... c oczywistą różnicę w funkcjonalności (odwracanie vs. sortowanie sekwencji), jaka jest przyczyna tej różnicy w implementacji?
Python: dlaczego * i * * są szybsze niż / i sqrt()?
Podczas optymalizacji kodu zrozumiałem co następuje:
>>> from timeit import Timer as T
>>> T(lambda : 123 ... m, że ma to związek ze sposobem implementacji Pythona w C, ale zastanawiam się, czy ktoś chciałby wyjaśnić dlaczego tak jest?
Dlaczego rozmiar tego łańcucha Pythona zmienia się po nieudanej konwersji int
From the tweet here :
import sys
x = 'ñ'
print(sys.getsizeof(x))
int(x) #throws an error
print(sys.getsizeof(x))
Otrzymuj ... ñ'
y = 'ñ'
int(x)
print(sys.getsizeof(y))
77!
print(sys.getsizeof('ñ'))
int('ñ')
print(sys.getsizeof('ñ'))
74, potem 77.
Dlaczego zmienna1 + = zmienna2 jest znacznie szybsza niż zmienna1 = zmienna1 + zmienna2?
Odziedziczyłem Kod Pythona, który służy do tworzenia ogromnych tabel (do 19 kolumn szerokości 5000 wierszy). Narysowanie tabe ... Ale dlaczego była taka duża różnica? A dlaczego kompilator nie zauważył problemu w pierwszej wersji i nie zoptymalizował go?
Co dokładnie zawiera obj. zakończenie?
Beazley pg 100 wspomina:
>>>python.__closure__
(<cell at 0x67f50: str object at 0x69230>,)
>>>pytho ... ell_contents
Rozumiem, że __closure__ to lista, ale co to wszystko
cell stuff I str object?? To wygląda jak 1-arowa krotka?