Chcę używać podstawowej wiedzy do poprawy wydajności kodu. Wiem, że w systemie dwójkowym. kiedy ostatnia cyfra liczby wynosi 1, jest to liczba nieparzysta, a 0 to liczba parzysta. Jak w ten sposób ocenić numer int w python? Czy ten pyton daje jakąkolwiek wbudowaną metodę, aby to zrobić?Jak ocenić liczbę int, parzystą lub nieparzystą? (sposób binarny)
Odpowiedz
I to 1:
0000101001000101
0000000000000001
&
__________________
0000000000000001
Jeśli masz 1
liczba jest nieparzysta. Jeśli uzyskasz 0
, liczba jest parzysta. O ile to działa, chciałbym użyć operatora modulo zamiast:
>>> 8888 % 2
0
>>> 8881 % 2
1
To działa w ten sam sposób, jest tak samo szybki i wygląda ładniej:
In [65]: %timeit random.randint(1, 1000000) & 1 == 0
1000000 loops, best of 3: 1.02 us per loop
In [66]: %timeit random.randint(1, 1000000) % 2 == 0
1000000 loops, best of 3: 1.03 us per loop
Można &
liczbę i 1, jeśli uzyskać 0
, a następnie liczba jest równa, 1
oznacza, że liczba jest nieparzysta.
>>> 2 & 1
0
>>> 3 & 1
1
Można po prostu użyć operatora &
, aby sprawdzić, czy ustawiony jest najniższy bit;
a = 77
is_odd = bool(a & 1)
print is_odd # Prints True
a = 64
is_odd = bool(a & 1)
print is_odd # Prints False
** PYTHON: najmniej znaczący METODA BIT **
>>> def is_odd(i): return bool(i & 1)
>>> def is_even(i): return not is_odd(i)
>>> [(j, is_odd(j)) for j in range(10)]
[(0, False), (1, True), (2, False), (3, True), (4, False), (5, True), (6, False), (7,
True), (8, False), (9, True)]
>>> [(j, is_even(j)) for j in range(10)]
[(0, True), (1, False), (2, True), (3, False), (4, True), (5, False), (6, True), (7,
False), (8, True), (9, False)]
>>>
Zobacz jeżeli można pomaga czy nie.
Objaśnienie:
Sprawdź, czy liczba całkowita jest parzysta czy nieparzysta. Istnieje więcej niż jeden sposób rozwiązania tego zadania: Użyj predykatów parzystych i nieparzystych, jeśli zapewnia je język. Sprawdź najmniej znaczącą cyfrę. Z liczb całkowitych binarnych i bitowych - i 1 jest równe 0 iff i jest równe, lub równe 1 iff i jest nieparzyste. Podziel i przez 2. Reszta jest równa 0 iff i jest parzysta. Reszta jest równa +1 lub -1, iff i jest nieparzysta. Używaj modularnych kongruencji: i ≡ 0 (mod 2) iff i jest parzysty. i ≡ 1 (mod 2) iff i jest nieparzyste.
Sprawdź, czy liczba całkowita jest parzysta czy nieparzysta. Istnieje więcej niż jeden sposób rozwiązania tego zadania: Użyj predykatów parzystych i nieparzystych, jeśli zapewnia je język. Sprawdź najmniej znaczącą cyfrę. Z liczb całkowitych binarnych i bitowych - i 1 jest równe 0 iff i jest równe, lub równe 1 iff i jest nieparzyste. Podziel i przez 2. Reszta jest równa 0 iff i jest parzysta. Reszta jest równa +1 lub -1, iff i jest nieparzysta. Używaj modularnych kongruencji: i ≡ 0 (mod 2) iff i jest parzysty. i ≡ 1 (mod 2) iff i jest nieparzysta. –
# Modular Congruencies #
>> def is_even(i):
return (i % 2) == 0
>>> is_even(1)
False
>>> is_even(2)
True
>>>
@Vinceeema Łatwiejsza metoda! –
Używam tej metody wcześniej. Dzięki – Vinceeema