列表序列的最小差异

时间:2021-08-01 06:01:29

标签: python

我是 Python 新手。我正在编写程序以找到元素序列的最小差异。例如我有一个输入 A=[7,8,9],M=3。序列中所有元素的差应该是这种形式 S=(|7-7|,|7-8|,|7-9|,|8-7|,|8-8|,|8-9|, |9-7|,|9-8|,|9-9|).S=[0,1,2,1,0,1,2,1,0]。我们在列表中得到 9 个不同的元素。所以s的M个最小元素的输出是0。因为0是3个最小元素。有谁知道我做错了什么

enter code here
F=[]
A = [7, 8, 9]
M = 3
S=0
for i in range(len(A)):
    for j in range(len(A)):
        S = S + (abs(A[i] - A[j]))
        t = F.append(S)
        t.sort()
        for k in range(len(t)):
            if k == M:
               break
print(t[k])

2 个答案:

答案 0 :(得分:0)

在这里,你可以试试这个:

x=[7,8,9]
y=[abs(j-k) for j in x for k in x]
print(y)

你所做的基本上是一个嵌套循环。 过程如下:

for i in x:
    for j in x:
       
#==== This is what your program needs =====
i=7
|__j=7
|__j=8
|__j=9
i=8
|__j=7
|__j=8
|__j=9
i=9
|__j=7
|__j=8
|__j=9

现在如果你打印它的样子:

x=[7,8,9]
for i in x:
    print(f'The main number is {i}.')
    for j in x:
       print(f"{i} - {j} = {abs(i-j)}") 

这正是您所需要的

The main number is 7.
7 - 7 = 0
7 - 8 = 1
7 - 9 = 2
The main number is 8.
8 - 7 = 1
8 - 8 = 0
8 - 9 = 1
The main number is 9.
9 - 7 = 2
9 - 8 = 1
9 - 9 = 0

答案 1 :(得分:0)

正确的代码在这里:

A = [7, 8, 9]
M = 3
S=[]   # 
for i in range(len(A)):
    for j in range(len(A)):
        S.append(abs(A[i] - A[j]))
        #  t = F.append(S)   # t is not defined before

S.sort()
print(S[M-1])  # S is sorted

如果您有任何问题,请咨询我。

相关问题