Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.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,期望输出: c = [-1, 0, 1, 2, 3, 4] d = [-1,0,2,3,4,5,6] a = [-1, 1, 6, 8, 9, 12] main = [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] 我想知道,给定一个区间,有序集在较大的集合中的次数。在我的情况下,我选择5,因为这是我的扑克游戏。这套装置不起作用,因为它们需要整齐有序,所以我不知道该用什么 在我的程序中,我尝试使用for循环,但我没有得到它 fc = [-1,0,

期望输出:

c = [-1, 0, 1, 2, 3, 4]  
d = [-1,0,2,3,4,5,6]
a = [-1, 1, 6, 8, 9, 12]
main = [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
我想知道,给定一个区间,有序集在较大的集合中的次数。在我的情况下,我选择5,因为这是我的扑克游戏。这套装置不起作用,因为它们需要整齐有序,所以我不知道该用什么

在我的程序中,我尝试使用for循环,但我没有得到它

fc = [-1,0,1,2,3],[0,1,2,3,4]
fd = [2,3,4,5,6]
fa = []

我只需要一个函数来比较两个列表。

将小列表与主列表的片段进行比较


既不漂亮也不完美,但它做的似乎是被问到的:

c=[-1,0,1,2,3,4] d=[-1,0,2,3,4,5,6] a=[-1,1,6,8,9,12] main=[-1,0,1,2,3,4,5,6,7,8,9,10,11,12] def find_in_order to_find、to_search、num_to_find: 解决方案=[] 对于要查找的存储桶: bucket_解决方案=[] 解决方案 对于[bucket[x:x+num\u to\u find]中的对象,对于rangelenbucket中的x-num\u to\u find+1]: 对于rangelento_搜索-num_to_find+1中y的[main[y:y+num_to_find]中的部分: 如果thing==节: bucket_解决方案 返回解决方案 fc,fd,fa=按[c,d,a]的顺序查找[u],main,5 fc==[-1,0,1,2,3],[0,1,2,3,4]] fd==[[2,3,4,5,6]] fa==[] 这里没有边界检查,所以它可能很脆弱。我也不喜欢魔术数字1的添加是如何使事情协调一致的。如果您关心速度,字符串搜索会做一些事情,比如保持滚动校验和,并且只在校验和匹配时进行比较。这只是一个练习。此外,我正在:

sys.version “3.6.8 | Anaconda,Inc.|违约,2018年12月30日,01:22:34\n[GCC 7.3.0]”
这是我做的一个函数,可能会对您有所帮助。您可以将列表作为参数传递,它将比较列表

c = [-1, 0, 1, 2, 3, 4]
d = [-1,0,2,3,4,5,6]
a = [-1, 1, 6, 8, 9, 12]
main = [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

for sublist in [c, d, a]:
    l = len(sublist)
    i = 0
    while i + l <= len(main):
        if sublist == main[i:i+l]:
            print 'sublist %s matches' % sublist
        i = i + 1

我不理解这个问题,但这可能会有帮助:您需要第二个循环,从子列表中拉出5个元素子列表中的每一个。但是OP可能需要从这里开始做一些工作。啊,我没有意识到小列表有六个元素,而不是五个元素。好电话。
c = [-1, 0, 1, 2, 3, 4]
d = [-1,0,2,3,4,5,6]
a = [-1, 1, 6, 8, 9, 12]
main = [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

for sublist in [c, d, a]:
    l = len(sublist)
    i = 0
    while i + l <= len(main):
        if sublist == main[i:i+l]:
            print 'sublist %s matches' % sublist
        i = i + 1
main_set = [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
c = [-1, 0, 1, 2, 3, 4]


def compare(cmp_array):
  new_arrays = []
  temp = []
  for pos, i in enumerate(cmp_array):
        for i2 in range(pos, pos+5):
              temp.append(cmp_array[i2])
        new_arrays.append(temp)
        temp = []
        if pos >= len(cmp_array)-5:
              break
  return_arrays = [] 
  for array in new_arrays:
        for pos, i in enumerate(main_set):
              match = True
              if i == array[0]:
                    for pos2 in range(pos, pos+5):
                          if array[pos2-pos] != main_set[pos2]:
                                match = False
                                break
                    if match:
                          return_arrays.append(array)
  return return_arrays

fc = compare(c)

print(fc)