Python中的PHP empty函数

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

然后我遇到了索引超出范围的错误。但是我知道有多种分步操作的方法,但这不是我想要的。


1
请查看此处:https://dev59.com/d3RB5IYBdhLWcg3w6LR2 - Victor
必须使用数组实现吗?使用dict可以让你使用a.setdefault([]),然后就完成了... - sarnold
你得到的异常正是通过将其包含在“try...catch”块中进行处理的正确方式。如果您能展示出目前为止编写的Python代码,可能会更容易帮助您并找到一种更简单的实现代码的方法。 - Toote
3个回答

3

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

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

在Python中,映射数据结构被定义为字典

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

empty()函数具有多种用途。 在您的使用上下文中,它等价于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
如果您尝试使用列表来完成此操作,您必须将该索引实际设置为“none”,否则该元素将不存在,您可能会尝试检查超出列表末尾的索引。
>>> i = [None]
>>> i
[None]
>>> i = [None, None]
>>> i
[None, None]
>>> i[1] is None
True

嗨,谢谢。如果我将其初始化为“none”,那么我最好还是正确地初始化它们。 - James Lin

0
# variable may not exsists    
if (variable in vars() or variable in globals()) and variable != "" and variable == False:
    pass

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接