我有两个阵列:
[7, 6, 9, 8]
[1, 2, 3, 4, 5, 3, 2, 1]
我想像这样滑过它们:
迭代1:
[7, 6, 9, |8|]
[|1|, 2, 3, 4, 5, 3, 2, 1]
2:
[7, 6, |9, 8|]
[|1, 2|, 3, 4, 5, 3, 2, 1]
3:
[7,|6, 9, 8|]
[|1, 2, 3|, 4, 5, 3, 2, 1]
4:
[|7, 6, 9, 8|]
[|1, 2, 3, 4|, 5, 3, 2, 1]
5:
[|7, 6, 9, 8|]
[1, |2, 3, 4, 5|, 3, 2, 1]
它一直以第一个数组的长度运行,直到…
迭代9:
[|7, 6, 9|, 8|]
[1, 2, 3, 4, 5, |3, 2, 1|]
10:
[|7, 6|, 9, 8|]
[1, 2, 3, 4, 5, 3, |2, 1|]
11:
[|7|, 6, 9, 8|]
[1, 2, 3, 4, 5, 3, 2, |1|]
我已经试过什么了?一堆乱七八糟的东西根本不管用,我担心分享它会让很多人甚至不敢回应
编辑:以下是我的非工作代码,供那些想要查看它的人使用:
embedding_list_1 = [[1, 2, 3], [1, 3, 4], [1, 2, 4]]
embedding_list_2 = [[1, 2, 3], [1, 3, 4], [1, 2, 4], [1, 2, 4], [1, 2, 4], [3, 4, 5]]
region_range = 1
first_run = True
increment = True
embedding_list_2_start = 0
embedding_list_2_end = len(embedding_list_1)
while region_range >= 0:
if first_run:
print('Cutting embedding list 1 from:', len(embedding_list_1)-region_range, 'to', len(embedding_list_1))
print(embedding_list_1[len(embedding_list_1)-region_range:])
print('Cutting embedding list 2 from:', 0, 'to', region_range)
embedding_list_2[:region_range]
region_range +=1
first_run = False
else:
chopped_off = embedding_list_1[len(embedding_list_1)-region_range:]
print(chopped_off)
embedding_list_2[embedding_list_2_start:region_range]
if increment:
region_range +=1
if region_range == len(embedding_list_1):
#break
#use full list
print(len(embedding_list_1))
embedding_list_2_start+=1
embedding_list_2_end+=1
print('Cutting embedding list 2 from', embedding_list_2_start, 'to', embedding_list_2_end)
print(embedding_list_2[embedding_list_2_start:embedding_list_2_end])
increment = False
if embedding_list_2_end == len(embedding_list_2):
#Stop incrementing end
#Start negative shift for other embedding
region_range-=1
print('Cutting embedding list 1 from: 0', 'to', region_range)
embedding_list_1[0:region_range]
embedding_list_2_start+=1
embedding_list_2_end+=1
print('cuting embedding list 2 from:', embedding_list_2_start, embedding_list_2_end)
embedding_list_2[:embedding_list_2_end]
这里有一个快速的,可能相当肮脏的尝试
在第一次迭代中,重叠如下所示:
让我们先看看与
list2
相关的一切。在第一次迭代中现在,使用以下数字查看
list1
:随着迭代的推进,
l2_window_start
、l2_window_end
和offset
都增加了1l1_window_start
减少1将此循环:
这为我们提供了所需的输出:
我的解决方案与@pranav hosangadi的答案非常相似(也许最终是相同的)。当我的答案根据每个列表中的窗口元素配对生成元组时,我产生了一个稍微不同的结果
正如@pranav hosangadi的回答一样,我们从覆盖整个幻灯片的范围开始。棘手的部分(至少对我来说)是确定正确的起点和终点
这会产生略有不同(错误?)的输出:
这里是关于使用zip函数的一个稍微不同的变体
运行
slide(l1, l2)
,产生:相关问题 更多 >
编程相关推荐