如何使用Python 3正确地重新排序列表?

时间:2018-06-20 01:56:21

标签: python python-3.x list

我是一个小程序,通过最小的更改,我将按照顺序对列表进行重新排序。我只想显示所做的更改数量。这是我的代码:

n, k = list(map(int, input().split()))
a = list(map(int, input().rstrip().split()))
store_1 = range(a[0],a[0]+(n*k),k)
store_2 = []
for y in store_1:
    if y not in a:
       store_2.append(y)
print(len(store_2))

此处的程序是输出重新排序列表的最少方法。该列表将按照在'k'上设置的顺序进行重新排序。对于我所做的某些情况,该程序似乎运行良好。例如:

In: 6 2
In: 1 2 5 7 9 85
Out: 2

像这样的情况似乎可行,因为'k'设置为2,所以列表必须遵循2的顺序。因此,可以进行的最小更改是将2 = 3更改为85 = 11。

但是在某些困难的情况下,我的代码还差得很远。例如:

In: 8 1
In: 1 1 4 5 6 7 11 12
Out: 3

但这是完全错误的输出,因为不可能进行这些更改。可以做出的最佳更改是[2,3,4,5,6,7,8,9],其中包含4个更改。

如何使我的代码能够按照顺序有效且正确地重新排列列表?

0 个答案:

没有答案