试着在我的阵列上找到算法

时间:2017-03-12 15:18:41

标签: algorithm tabs

我是python的初学者,我想要一个程序找到数组中的移位: 输入:[16,40,42,46,47,41,43,48,49,52] 我想在几个数字之间找到1,2和3的偏移。 输出:

{0: [46 - 47], 1: [48 - 49]}
{0: [40 - 42], 1: [41 - 43]}
{0: [49 - 52]}

我试过这个:

tab = [16, 40, 42, 46, 47, 41, 43, 48]
for i, j in enumerate(tab):
    try:
        if tab[i + 1] - tab[i] == 1:
            stock = i
        if tab[i + 1] - tab[i] == 2:
            stock2 = i
    except:
        print ("")

print (tab)
print ('Shift of one : ' +  '[%d' % tab[stock] + ' - %d]' % tab[stock + 1])
print ('Shift of two : ' + '[%d' % tab[stock2] + ' - %d]' % tab[stock2 + 1])
坦克,你非常喜欢!!!

1 个答案:

答案 0 :(得分:1)

我希望我能正确理解你的问题。

tab = [16, 40, 42, 46, 47, 41, 43, 48, 49, 52]
shiftList = [list() , list() , list()]
for i in range(0, len(tab)-1):
    for gap in range (0,len(shiftList)):
        if tab[i + 1] - tab[i] == gap + 1 :
            shiftList[gap].append((tab[i],tab[i + 1])); 
print (shiftList)

我们使用元组列表的列表。列表索引给出了间隙,列表列表将变换对存储为元组

输出是:

[
 [(46, 47), (48, 49)],
 [(40, 42), (41, 43)],
 [(49, 52)]
]