我是 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])
答案 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
如果您有任何问题,请咨询我。