自定义Python哈希函数运行无输出,寻求解决方案
问题原因
- 类型不匹配:
keystring里的元素是整数类型的1,但代码里判断的是字符串类型的"1"("1".lower()结果还是字符串"1"),两者不属于同一类型,所以"1".lower() in keystring永远为False,while循环根本不会执行,自然没有输出。 - 潜在死循环问题:就算类型匹配,当前代码也会陷入死循环——找到第一个
1后没有从keystring中移除它,每次循环都会重复处理同一个1,无法终止。
解决办法
修复类型匹配+解决死循环的完整代码
keystring = [1, 4, 2, 3, 2, 1, 4, 1] bucket1 = [] bucket2 = [] bucket3 = [] bucket4 = [] while 1 in keystring: idx = keystring.index(1) # 防止最后一个元素是1时索引越界 if idx + 1 < len(keystring): bucket1.append(keystring[idx + 1]) print(bucket1) # 移除已处理的1,避免重复循环 keystring.pop(idx)
关键修改说明
- 把判断条件里的字符串
"1"改成整数1,匹配列表中元素的实际类型。 - 每次处理完目标元素后,用
pop(idx)移除已处理的1,确保循环能正常推进。 - 增加索引越界判断,避免列表最后一个元素是
1时,idx+1超出列表范围导致报错。
进阶优化(可选)
如果需要处理更多bucket,用字典管理会更简洁:
keystring = [1, 4, 2, 3, 2, 1, 4, 1] buckets = {1:[], 2:[], 3:[], 4:[]} while 1 in keystring: idx = keystring.index(1) if idx + 1 < len(keystring): target_num = keystring[idx + 1] if target_num in buckets: buckets[target_num].append(target_num) print(buckets[1]) keystring.pop(idx)
内容的提问来源于stack exchange,提问作者original hacker name
相关产品推荐
相关产品推荐

