JavaScript线性重复值检测函数的逐行Python等效实现求助
逐行对应Python实现(完全对齐原JS逻辑,未做优化)
def hasDuplicateValue(array): # 对应JS的稀疏数组,用字典更贴合原逻辑(避免Python列表索引越界报错) existing_numbers = {} for i in range(len(array)): current_num = array[i] # 以下为你标注的疑问代码块的对应实现 if current_num not in existing_numbers: existing_numbers[current_num] = 1 else: return True return False
疑问代码块逐行转换说明
你标注的3行JS代码对应转换规则如下:
for(var i = 0; i < array.length; i++):Python中遍历数组索引通过range(len(数组名))实现,对应写法为for i in range(len(array)):if(existingNumbers[array[i]] === undefined):原JS逻辑是判断当前值还没有被记录到存储结构中,Python用字典实现存储时,直接判断值是否为字典的键即可,对应写法为if array[i] not in existing_numbers:existingNumbers[array[i]] = 1:Python语法和JS基本一致,直接对应写法为existing_numbers[array[i]] = 1
补充说明:原JS把普通数组当做稀疏数组/映射表使用的写法无法直接套用到Python中,因为Python列表访问超过自身长度的索引会直接抛出索引越界错误,不会返回类似undefined的空值,所以用字典替代是最贴合原逻辑的实现,没有修改原代码的时间复杂度和判断规则。
内容的提问来源于stack exchange,提问作者PandaM
相关产品推荐
相关产品推荐

