Короткие целые в Python

Вот основной фрагмент. Что помогает вам очистить свой путь. Просто скопируйте код ниже.

<div id="question1"  style="position:fixed; left:20px; top: 50px;">           
    <label>  <input type="radio" name="q0" value="a1" id="a1" class="radio" onchange="checkAns()"> IMAGE 1 <br><br><br> </label>
    <label>  <input type="radio" name="q0" value="a2" id="a2" class="radio" onchange="checkAns()"> IMAGE 2 <br><br><br> </label>
    <label>  <input type="radio" name="q0" value="a3" id="a3" class="radio" onchange="checkAns()"> IMAGE 3 <br><br><br> </label>
    <label>  <input type="radio" name="q0" value="a4" id="a4" class="radio" onchange="checkAns()"> IMAGE 4 <br><br><br> </label>
    <label>  <input type="radio" name="q0" value="a5" id="a5" class="radio" onchange="checkAns()"> IMAGE 5 <br><br><br> </label>
    <button id="btn" disabled>Button</button> 
</div>

<script>
    var a1 = document.getElementById('a1');
    var a2 = document.getElementById('a2');
    var a3 = document.getElementById('a3');
    var a4 = document.getElementById('a4');
    var a5 = document.getElementById('a5');

    function checkAns(){
        console.log(a1.checked, a2, a3, a4, a5);
        if (a1.checked || a2.checked || a3.checked || a4.checked || a5.checked) {
            document.getElementById("btn").disabled = false; 
        }
    }
</script>

Это может помочь.

18
задан Arnav 23 September 2008 в 10:35
поделиться

3 ответа

Нет. Но можно использовать коротких целых в массивах:

from array import array
a = array("h") # h = signed short, H = unsigned short

, пока значение остается в том массиве, это будет короткое целое.

35
ответ дан 30 November 2019 в 07:00
поделиться

Благодаря Armin для указания на модуль 'массива'. Я также нашел модуль 'структуры', который упаковывает структуры c-стиля в строке:

Из документации ( https://docs.python.org/library/struct.html ):

>>> from struct import *
>>> pack('hhl', 1, 2, 3)
'\x00\x01\x00\x02\x00\x00\x00\x03'
>>> unpack('hhl', '\x00\x01\x00\x02\x00\x00\x00\x03')
(1, 2, 3)
>>> calcsize('hhl')
8
5
ответ дан 30 November 2019 в 07:00
поделиться

Предложение Armin модуля массива является, вероятно, лучшим. Две возможных альтернативы:

  • можно создать дополнительный модуль сами, который обеспечивает структуру данных, которая Вы после. Если это - действительно просто что-то как набор коротких замыканий, то это довольно просто сделать.
  • можно обмануть и управлять битами, так, чтобы Вы сохранили одно число в более низкой половине интервала Python и другого в верхней половине. Вы записали бы некоторые служебные функции для преобразования в них в структуре данных. Ужасный, но это может быть сделано работать.

также стоит понять, что целочисленный объект Python не составляет 4 байта - существует дополнительно служебный. Таким образом, если у Вас есть действительно большое количество коротких замыканий, затем можно сохранить больше чем два байта за число при помощи короткого C в некотором роде (например, модуль массива).

я должен был сохранить большой набор целых чисел в памяти только что, и словарь с целочисленными ключами и значениями был слишком большим (я имел 1 ГБ в наличии для структуры данных IIRC). Я переключился на использование IIBTree (от ZODB) и сумел соответствовать ему. (ints в IIBTree являются реальным C ints, не целыми числами Python, и я изрубил автоматического переключателя к IOBTree, когда число было больше, чем 32 бита).

2
ответ дан 30 November 2019 в 07:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: