栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

列表练习:四数之和

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

列表练习:四数之和


我的CSDN主页My Python 学习个人备忘录我的博文推荐


列表练习:四数之和

   CSDN“每日一练”(Python )题目
    题目代码运行效果完整代码

练习题目

  看到题目与《三数之和》类似,就“偷”其代码。鸞鸞

  缩进太深,代码有点儿丑。若若
回首页

  target = 0, 1, 2, 3, 4 打包输出四数和的符题数组。


回首页

python完整代码 (如果从语句注释不能清楚作用,请评论区留言指教和探讨。欄)
# coding: utf-8


def isvalid(lis, lis0):
    '''判断组合有效'''
    temp = lis0[:]
    for i in lis:
        #print(i) #调试用语句。
        if i in temp: #i在原列表置flag为True,删除原列表中的第一个i并继续遍历。
            flag = True
            temp.remove(i)
        else: #i不在原列表,置flag为False并退出遍历。
            flag = False
            break
    return flag


#input(f'nn{isvalid([2, 5, 9, 5], [0, 5, 9, 2, 3, 5, 4])}') #该行为调试函数功能代码。


def isremove(lis, lis2):
    '''比较两列表元素是否相同'''
    if len(lis)!=len(lis2): #列表元素不等,返回False。
        return False
    temp = lis2[:]
    for i in lis:
        if i in temp: #i在比对列表置flag为True,删除比对列表中的第一个i并继续遍历。
            flag = True
            temp.remove(i)
        else: #i不在比对列表,置flag为False并退出遍历。
            flag = False
            break
    return flag


#input(f'nn{isremove([2, -1, -1], [-1, 2, -1])}') #该行为调试函数功能代码。


def find_nums(target): #查找符题数组函数。
    nums_out = []
    for i in nums:
        for j in nums:
            for m in nums:
                for n in nums:
                    if i+j+m+n==target:
                        new_nums = [i, j, m, n]
                        if new_nums not in nums_out and isvalid(new_nums, nums): #组合有效且不重复,追加到输出数组。
                            flag = True
                            for k in nums_out: #判断输出数组中是否有相同元素数组,有则继续下一组合。
                                if isremove(k, new_nums):
                                    flag = False
                                    break
                            if flag is True: #组合数组不在输出数组中,追加组合数组。
                                nums_out.append(new_nums)
    return nums_out

# Main Codes
s = '''四数之和'''
nums = [1, 0, -1, 0, -2, 2]
target = 0, 1, 2, 3, 4 #预设求和值数组。
if __name__=='__main__':
    for i in target:
        print(f'nn{s:.^38}nn数组:{nums},四数和值:{i}。n{"﹊"*21}nn符题组合:{find_nums(i)}nn{"The End":_^42}')

回首页

我的博文推荐:

排序数组中查找元素的重复起止位置(当前阅读1194)柱状图中最大矩形(当前阅读1596)电话拨号键盘的字母组合(当前阅读1206)密码强度检测器(当前阅读1662)求列表平衡点(当前阅读1694) 字符串统计(当前阅读1657)尼姆游戏代码优化版(当前阅读816)尼姆游戏(聪明版首发)(当前阅读3230)

推荐条件 点阅破千

参考文章:


上一篇: 生成器复习:无限项斐波那契数列
下一篇: 


回首页

精品文章:

OPP三大特性:封装中的property通过内置对象理解python'正则表达式python中“*”的作用Python 完全自学手册海象运算符Python中的 `!=`与`is not`不同学习编程的正确方法

来源:老齐教室


CSDN实用技巧博文:

8个好用到爆的Python实用技巧python忽略警告


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/701218.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号