列表理解(python)和数组理解(php)?

Posted

技术标签:

【中文标题】列表理解(python)和数组理解(php)?【英文标题】:List comprehension (python)and array comprehension (php)? 【发布时间】:2011-08-05 14:07:56 【问题描述】:
>>> lst = ['dingo', 'wombat', 'wallaby']
>>> [w.title() for w in lst]
['Dingo', 'Wombat', 'Wallaby']
>>> 

在 python 中,有一些简单的方法来处理列表理解。

array('dingo', 'wombat', 'wallaby');php 中怎么样?

是否有数组理解或任何内置函数,或者通常循环它?

编辑

function addCaps( Iterator $it )

    echo ucfirst( $it->current() ) . '<br />';
    return true;


/*** an array of aussies ***/
$array = array( 'dingo', 'wombat', 'wallaby' );

try

    $it = new ArrayIterator( $array );
    iterator_apply( $it, 'addCaps', array($it) );

catch(Exception $e)

    /*** echo the error message ***/
    echo $e->getMessage();

看起来代码不像我想象的那么简单?

【问题讨论】:

吹毛求疵:list 是一个非常无用的名称,并且会影响内置函数。 【参考方案1】:

您可以将array_map() 与匿名函数一起使用(闭包仅适用于 PHP 5.3+)。

$arr = array_map(function($el)  return $el[0]; , array('dingo', 'wombat', 'wallaby'));
print_r($arr);

输出

Array
(
    [0] => d
    [1] => w
    [2] => w
)

编辑:OP 的示例代码

$arr = array_map('ucwords', array('dingo', 'wombat', 'wallaby'));
print_r($arr);

输出:

Array
(
    [0] => Dingo
    [1] => Wombat
    [2] => Wallaby
)

【讨论】:

闭包是匿名函数。更多信息:php.net/manual/en/functions.anonymous.php 不是 closure,因为它不会从外部“捕获”变量。只是一个匿名函数。 为什么它叫匿名? :) ,对不起,我真的需要你理解而不是阅读长文档。谢谢 @IEnAk:声明 function foo($x) return $x; 会创建一个绑定到名称 foo 的函数。函数字面量或匿名函数 function ($x) return $x; 本身没有名称。当然,您可以将它分配给一个变量,这样您就有一个引用该函数的名称,但它不需要一个。 这比普通的foreach快吗?【参考方案2】:

您没有 PHP 的数组解析。你确实有像 array_walk() 这样的函数,类似于 python 的 map() 函数。

【讨论】:

【参考方案3】:

array_map()array_filter()

【讨论】:

以上是关于列表理解(python)和数组理解(php)?的主要内容,如果未能解决你的问题,请参考以下文章

初识Python

Python 列表理解 - numpy 数组 [关闭]

多个列表的产品-单个列表与列表数组,需要帮助理解[重复]

[引用数组的多个值时,使用Python列表理解排除重复项

理解PHP数组的序列化和反序列化

transformer中的 train.py的理解