【问题标题】:PHP empty function in pythonpython中的PHP空函数
【发布时间】:2012-06-14 21:37:03
【问题描述】:

我有以下 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

然后我的索引超出范围。但是我知道可以通过多个步骤来完成它,但这不是我想要的。

【问题讨论】:

  • 必须用数组实现吗? dict 会让你使用 a.setdefault([]) 并完成它......
  • 您得到的异常正是通过将其包含在 try...catch 块中的方法。如果您能向我们展示您目前的 Python 代码,那么帮助您可能会更容易,并且可能会找到一种更简单的方法来实现您的代码

标签: php python


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 您好,谢谢,如果我将其初始化为 none,那么我不妨正确初始化它们。
    【解决方案3】:
    # variable may not exsists    
    if (variable in vars() or variable in globals()) and variable != "" and variable == False:
        pass
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-17
      • 1970-01-01
      • 2017-05-10
      • 1970-01-01
      • 1970-01-01
      • 2010-09-29
      • 1970-01-01
      相关资源
      最近更新 更多