2012-06-12 48 views
2

我有以下PHP代碼,對於我來說,我想不出一個簡單的&優雅的方式來實現python中的empty()函數來檢查索引是否在一個列表。python中的PHP空函數

$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

甲映射對象可哈希值映射到任意對象。映射 是可變對象。目前只有一種標準映射 類型的字典。

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

在你試圖用一個列表來做到這一點時,你就必須實際設置該指標爲無,否則元素止跌」在那裏,你可能會試圖檢查列表末尾的索引。

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

嗨,謝謝,如果我初始化它沒有,那麼我也可以正確地初始化它們。 –