2012-06-12 2 views
2

У меня есть следующий PHP-код, и для жизни я не могу представить простой способдля реализации вокруг функции empty() в python, чтобы проверить, определен ли индекс в список.PHP пустая функция в python

$counter = 0; 
$a = array(); 
for ($i=0;$i<100;$i++){ 
    $i = ($i > 4) ? 0 : $i; 
    if empty($a[$i]){ 
    $a[$i]=array(); 
    } 
    $a[$i][] = $counter; 
    $counter++; 
} 

если я

if a[i] is None 

тогда я получаю индекс вне диапазона. Однако я знаю способы сделать это несколькими шагами, но это не то, что я хотел.

+1

Посмотрите здесь http://stackoverflow.com/questions/473099/python-how-to-check-if-a-given-index-in-a-dict-exists-yet – B7ackAnge7z

+0

Должен ли он быть реализован с массивом? «Dict» позволит вам использовать 'a.setdefault ([])' и делать с ним ... – sarnold

+0

Исключение, которое вы получаете, - это именно то, что нужно сделать, включив его в блок 'try ... catch'. Если бы вы могли показать нам свой код на Python, возможно, вам будет еще проще помочь вам и, возможно, найти более простой способ реализовать свой код. – Toote

ответ

3

PHP-массивы и списки Python не эквивалентны. PHP-массивы на самом деле associative containers:

Массив в PHP на самом деле является упорядоченной картой. Карта - это тип, который связывает значения с ключами. Этот тип оптимизирован для нескольких видов использования: ; его можно рассматривать как массив, список (вектор), хэш-таблицу (реализация карты), словарь, сбор, стек, очереди и, возможно, больше.

В Python, структура данных карты определяется как dictionary:

Объект отображения отображает hashable значения произвольных объектов. Сопоставления являются изменяемыми объектами. В настоящее время существует только одно стандартное сопоставление типа , словарь.

empty()serve many purposes. В вашем контексте использования, это эквивалентно Python in оператора:

>>> a = {} 
>>> a[1] = "x" 
>>> a[3] = "y" 
>>> a[5] = "z" 
>>> i = 3 
>>> i in a 
True 
>>> i = 2 
>>> i in a 
False 
0

В случае, когда Вы пытаетесь сделать это со списком, вы должны фактически установить, что индекс к нет, в противном случае элемент Wouldn» Там вы, возможно, попытаетесь проверить индекс за конец списка.

>>> i = [None] 
>>> i 
[None] 
>>> i = [None, None] 
>>> i 
[None, None] 
>>> i[1] is None 
True 
+0

Привет, спасибо, если я инициализирую его никому, я мог бы правильно инициализировать их. –

Смежные вопросы