首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >列表序列的最小差

列表序列的最小差
EN

Stack Overflow用户
提问于 2021-08-01 06:01:30
回答 2查看 63关注 0票数 0

我是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个最小的元素。有人知道我做错了什么吗?

代码语言:javascript
运行
复制
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])
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-08-01 06:15:59

正确的代码如下:

代码语言:javascript
运行
复制
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

如果你有任何问题,请问我。

票数 0
EN

Stack Overflow用户

发布于 2021-08-01 06:04:25

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

代码语言:javascript
运行
复制
x=[7,8,9]
y=[abs(j-k) for j in x for k in x]
print(y)

你所做的基本上就是一个嵌套循环。下面是它的运行方式:

代码语言:javascript
运行
复制
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

现在,如果打印它看起来是什么样子:

代码语言:javascript
运行
复制
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)}") 

这正是你所需要的

代码语言:javascript
运行
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68607871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档