鱼C论坛

 找回密码
 立即注册
查看: 2227|回复: 4

[技术交流] 0014-编程打卡:求出数组两两之差绝对值最小的值

[复制链接]
发表于 2022-9-1 18:07:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 不二如是 于 2022-9-1 18:07 编辑

001.png
002.png
003.png
004b.png

一星答案:
def fishc(data):
    b = []
    le = len(data)
    for i in range(0, le):
        b.append(data[i])
    min = abs(data[0]-b[1])
    for i in range(le):
        for j in range(le):
            if i == j:
                break
            if abs(data[i]-b[j]) < min:
                min = abs(data[i]-b[j])
    return min

a = [134, 43, -1876, 565, 1, 85, -63443, 569, -1899, 135, 9999]
print(fishc(a))

二星答案:
def fishc(my_list):
    the_list = []
    for i in my_list:
        for k in my_list:
            n = abs(i-k)
            the_list.append(n)
    # 下面2句是为了清除差列表中自身相减得到的0
    for t in range(1, len(my_list)+1):
        the_list.remove(0)
    minnum = min(the_list)
    return minnum

if __name__ == '__main__':
    a = [134, 43, -1876, 565, 1, 85, -63443, 569, -1899, 135, 9999]
    print(fishc(a))

三星答案:
a = [134, 43, -1876, 565, 1, 85, -63443, 569, -1899, 135, 9999]
a.sort()
m = min([abs(a[i] - a[i + 1]) for i in range(len(a) - 1)])
print(m)

基础语法:



算法讲解:





本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-9-2 08:48:13 | 显示全部楼层
来看看代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-2 12:54:32 | 显示全部楼层
"""
指定数组:
    [134,43,-1876,565,1,85,-63443,569,-1899,135,999]
要求:
    输出指定数组中两两之差的最小绝对值
分析:
    1.可以对列表使用sort()函数进行排序
    2.然后分别取列表中的值进行计算
    3.取绝对值
    4.创建一个新列表,保存这些绝对值
    5.min() - 输出该列表的最小值即为最小的绝对值
"""
list1 = [134, 43, -1876, 565, 1, 85, -63443, 569, -1899, 135, 999]
# 1. sort()
list1.sort()  # 默认是升序排序
print(list1)  # 查看排序后的列表

# 2.取值进行计算 绝对值 添加到新列表中
abs_list = []
for i in range(len(list1)):
    if i == len(list1) - 1:  # 不能使得接下来的代码超出列表索引值范围
        break
    abs_value = abs(list1[i + 1] - list1[i])
    abs_list.append(abs_value)

# 3. 输出绝对值列表
print(abs_list)

# 4. 对绝对值列表abs_list()取最小值
print("结果为:", min(abs_list))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-2 13:13:53 | 显示全部楼层
# 三星答案 试解读
a = [134, 43, -1876, 565, 1, 85, -63443, 569, -1899, 135, 9999]
# 1. 对列表进行排序
a.sort()

# 2. 使用列表推导式的同时 进行min()函数计算
# m = min([abs(a[i] - a[i + 1]) for i in range(len(a) - 1)])
# print(m)

# 将上述列表推导式还原成for循环
abs_list = []  # 将以上列表推导式所生成的列表-暂时命名为abs_list

for i in range(len(a) - 1):
    abs_value = abs(a[i] - a[i+1])  # 因为是求绝对值所以前面的元素减去后面的元素或者后面的元素减去前面的元素都无所谓
    abs_list.append(abs_value)  # 将计算的结果添加到新的列表中

# 之后对列表调用min()函数 输出最小的绝对值
print(min(abs_list))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-2 19:51:41 | 显示全部楼层
大佬教我一下呗,不知道答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-16 16:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表