坚持使用PHP进行Python翻译

时间:2016-05-05 04:30:08

标签: php python arrays

我正在尝试将一些PHP代码翻译成Python,并且我在下面的代码(包含在上下文中)的第4行停留:

$table = array();
for ($i = 0; $i < strlen($text); $i++) {
    $char = substr($text, $i, $look_forward);
    if (!isset($table[$char])) $table[$char] = array();
}

如果array()用于在PHP中创建数组,那么$table[$char] = array()在做什么?在现有数组中创建一个新数组?还是扩展阵列?

这是完成了什么?什么是Python相当于这个?

if (!isset($table[$char])) $table[$char] = array();

3 个答案:

答案 0 :(得分:1)

在我看来,您应该使用list以外的其他数据结构作为table变量。我认为dict应该是好的。

我刚刚尝试用Python模仿你的PHP代码:

table = {} # use dictionary instead of list here
for char in text:
    if char not in table:
        table[char] = []
    # do your stuff with table[char]
    pass 

另外,我建议你研究一下https://docs.python.org/3/library/collections.html#collections.defaultdict

使用该类,可以通过以下方式重写代码:

import collections

table = collections.defaultdict(list)
for char in text:
    # do your stuff with table[char], empty list is created by default
    pass

答案 1 :(得分:-1)

它叫做Multidimensional Arrays,一个数组可以容纳另一个数组。 看看以下链接 http://www.w3schools.com/php/php_arrays_multi.asp

答案 2 :(得分:-1)

if(!isset($ table [$ char]))$ table [$ char] = array(); 设置 $ table [$ char]的值变量为 array()如果 $ table [$ char] 尚未设置

$ table是空数组,所以它没有包含“ $ char ”作为键,因此检查是否设置了 $ table [$ char] ,如果然后不要将($ table [$ char])值设置为 array()

如果你把你的代码放在

$table = array();
for ($i = 0; $i < strlen($text); $i++) {
    $char = substr($text, $i, $look_forward);
    $table[$char] = array();
}

然后它发出通知,如通知:未定义索引:$ char in