Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 二进制搜索不检查中间值_Python - Fatal编程技术网

Python 二进制搜索不检查中间值

Python 二进制搜索不检查中间值,python,Python,因此,我试图编写一个迭代二进制搜索程序,它不会将值与半中间索引进行比较,直到下限-上限为什么不简单地使用集合? 在集合上计算交点应该比在列表上更有效,因为不需要循环 如果您的输入是: first_list = [1,3,5,7,9] second_list = [0,3,6,9] 您的输出可以是: found_set = set(first_list).intersection(set(second_list)) print(found_set) output: set([9, 3]) 然

因此,我试图编写一个迭代二进制搜索程序,它不会将值与半中间索引进行比较,直到下限-上限为什么不简单地使用集合? 在集合上计算交点应该比在列表上更有效,因为不需要循环

如果您的输入是:

first_list = [1,3,5,7,9]
second_list = [0,3,6,9]
您的输出可以是:

found_set = set(first_list).intersection(set(second_list))

print(found_set)
output: set([9, 3])
然后,您可以像使用find_列表一样迭代find_集

注意集合元素是唯一的,所以第一个列表中的重复元素在找到的集合中只出现一次

打字错误:上界=第二个基因组-1

我假设这应该是:上界=lensecond\u list-1

问题:尽量减少项目的比较

我不认为这样做有什么好处。 您的代码使用6个比较,默认二进制搜索使用4个比较。 重新考虑你的方法

问题:。。。找到的列表似乎总是只打印一个值。 如果我在第一个列表中的第二个列表中添加一个值,它不会显示在列表中

这是因为中间不会迭代:

数据:

输出:

found_set = set(first_list).intersection(set(second_list))

print(found_set)
output: set([9, 3])
first_list = [1, 2, 3, 4, 5, 6]
second_list = [3,4,5]
second_list[1](4) == 1 l/u:-1
second_list[1](4) == 2 l/u:-1
second_list[1](4) == 3 l/u:-1
second_list[1](4) == 4 l/u:-1
second_list[1](4) == 5 l/u:-1
second_list[1](4) == 6 l/u:-1
list_found:[4]