我正在尝试将一些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();
答案 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