3

我有以下 PHP 代码,对于我的生活,我想不出一种简单而优雅的方法来实现 python 中的 empty() 函数来检查索引是否在列表中定义。

$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

然后我得到索引超出范围。但是,我知道通过多个步骤来做到这一点,但这不是我想要的。

4

3 回答 3

3

PHP 数组和 Python 列表是不等价的。PHP 数组实际上是关联容器

PHP 中的数组实际上是一个有序映射。映射是将值与键相关联的类型。这种类型针对几种不同的用途进行了优化;它可以被视为数组、列表(向量)、哈希表(映射的实现)、字典、集合、堆栈、队列等等。

在 Python 中,地图数据结构被定义为字典

映射对象将可散列值映射到任意对象。映射是可变对象。目前只有一种标准映射类型,即字典。

empty()功能有多种用途。在您的使用上下文中,它相当于 Pythonin运算符:

>>> a = {}
>>> a[1] = "x"
>>> a[3] = "y"
>>> a[5] = "z"
>>> i = 3
>>> i in a
True
>>> i = 2
>>> i in a
False
于 2012-06-12T01:01:15.897 回答
0

如果您尝试使用列表执行此操作,则必须将该索引实际设置为无,否则该元素将不存在,您可能会尝试检查列表末尾之后的索引。

>>> i = [None]
>>> i
[None]
>>> i = [None, None]
>>> i
[None, None]
>>> i[1] is None
True
于 2012-06-12T01:03:33.213 回答
0
# variable may not exsists    
if (variable in vars() or variable in globals()) and variable != "" and variable == False:
    pass
于 2019-10-14T10:41:10.557 回答