Python基础-引用参数、斐波那契数列、无极分类

1.引用参数的问题

(1)列表(list)

  • 引用参数,传地址的参数,即list1会因list2修改而改变。
list1 = [1,2,3,4]
list2 = list1
print(list1)
list2[2] = 1
print(list2)
print(list1)
  • 非引用参数,不传地址的参数,即list1不会因list2修改而改变。
list1 = [1,2,3,4]
list2 = list1[:] #原理:复制了(遍历list1)一份list1再赋值给list2
print(list1)
list2[2] = 1
print(list2)
print(list1)

(2)字典(Dictionary)

  • 引用参数,传地址的参数,即dict1会因dict2修改而改变。
dict1 ={'name':'deng','age':18,'sex':1}
dict2 = dict1
print(dict1)
dict2['name'] = 'xiaodeng'
print(dict2)
print(dict1)
  • 非引用参数,不传地址的参数,即dict1不会因dict2修改而改变。
dict1 ={'name':'deng','age':18,'sex':1}
dict2 = {k:dict1[k] for k in dict1}  #原理:复制一份(遍历dict1)再拷贝给dict2
print(dict1)
dict2['name'] = 'xiaodeng'
print(dict2)
print(dict1)

(3)列表集合(set)

  • 引用参数,传地址的参数,即set1会因set2修改而改变。
set1 = set([1,2,3,4])  
set2= set1
print(set1)
set2.add(5)
print(set2)
print(set1)
  • 非引用参数,不传地址的参数,即set1不会因set2修改而改变。
set1 = set([1,2,3,4])  #列表集合的引用参数()
s = list(set1)    # s=[1,2,3,4]  强制将集合set类型转化为列表list(因为列表才能进行遍历复制)
set2 = set(s[:])  # set2=([1,2,3,4])  再将列表list强制转化回集合set类型
print(set1)
set2.add(5)
print(set2)
print(set1)

2.斐波那契数列

这里我使用一个实例问题进行分享:

兔子种群数量问题:
假设一对兔子一个月能生出一对兔子,出生的一对兔子到能够生育新的兔子需要1个月的时间。那如果一
个年之后这最开始这对兔子可以产生的种群兔子数量是多少呢?
在这里插入图片描述
从上面可以得到一个规律除了1月跟2月以外其它月的兔子对数是前两个月之和:
比如:3月的兔子数量就是1月跟2月数量之和,其它也是一样的。

解决方案:
(1)使用迭代来完成上面的运算:

def getNumber(n = 12):n1 = 1  # n1代表n-2这个月兔子的数量n2 = 1  # n2代表n-1这个月兔子的数量n3 = 1  # n3代表n这个月兔子的数量# 使用循环完成计算while n > 2:# print(n)n3 = n1 + n2    # n月的兔子等于n-1月加上n-2月的兔子数量# 为了计算下个月兔子数量,我们需要重新设置n-1与n-2月份的兔子数量n1 = n2n2 = n3n -= 1print("兔子的数量为:%d"% n3) return n3

(2)使用递归来完成上面的运算:

def getNumber2(n = 1):if n==1 or n==2:return 1else:return getNumber2(n-1) + getNumber2(n-2)

3.无极分类

分类为父子级分类。并且子级分类是没有极限的。以数据格式来显示分类。这样的分类称为无极分类

categorys = [{"id":2, "name":"国际新闻", "p_id":0},{"id":1, "name":"国内新闻", "p_id":0},{"id":3, "name":"娱乐新闻", "p_id":0},{"id":4, "name":"体育新闻", "p_id":0},{"id":5, "name":"广东新闻", "p_id":1},{"id":6, "name":"广西新闻", "p_id":1},{"id":7, "name":"北海新闻", "p_id":6},{"id":8, "name":"南宁新闻", "p_id":6},{"id":9, "name":"深圳新闻", "p_id":5},{"id":10, "name":"南山新闻", "p_id":9},{"id":11, "name":"龙岗新闻", "p_id":9},{"id":12, "name":"上水径新闻", "p_id":11},{"id":13, "name":"篮球新闻", "p_id":4},{"id":14, "name":"NBA新闻", "p_id":13},{"id":15, "name":"CBA新闻", "p_id":13},
]# for itme in categorys:
#     print(itme)"""
由于无极分类数据本身的输出就是混乱的。
我们需要对该数据进行排序输出。
以以下的例子为准:
|- 国内新闻
|- |- 广东新闻
|- |- |- 深圳新闻
|- |- |- |- 南山新闻
|- |- |- |- 龙岗新闻
|- |- |- |- |- 上水径新闻
|- |- 广西新闻
|- |- |- 北海新闻
|- |- |- 南宁新闻"""# 定义通过PID获取同级所有分类的方法
def getTree( pid = 0, tree = [], level=1):level_str = '|- ' * level             # 通过for循环进行遍历for cat in categorys:if cat["p_id"] == pid:            # 判断获取的pid与cat中的p_id是否相同cat["level_str"] = level_str  # 往cat添加新字段level_str并且赋值level_strcat["level"] = level          # 往cat添加新字段level并且赋值leveltree.append(cat)              # 将cat添加到tree中tree = getTree(cat["id"], tree, level+1)    # 通过自调找当前分类的子级分类return treetree = getTree()
for cat in tree:print("%s %s"%(cat["level_str"], cat["name"]))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/30132.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Java】线程池技术(一)Executor框架

背景 Java 底层提供了 Thread 类支持开发人员手动创建线程执行任务,但是这种操作会存在以下问题: 每次都要重新创造和回收 Thread 对象,性能较差。如果并发线程数较大,且任务执行时间较短,频繁创建和回收线程对象会大…

解锁TikTok内容趋势——高效获取TikTok标签信息接口

一、引言 在TikTok这个全球热门的短视频平台上,标签(Hashtags)是用户和内容创作者连接、发现新内容的重要工具。为了帮助品牌、市场分析师、内容创作者等更好地理解和利用TikTok上的内容趋势,我们推出了一款全新的接口服务&#…

PD19 Parallels Desktop 虚拟机 安装Windows10系统 操作步骤(保姆级教程,轻松上手)

Mac分享吧 文章目录 效果一、准备工作**下载软件** 二、开始安装1、打开pd 19 虚拟机,点击右上角文件,新建2、通过下载好的镜像安装Windows10系统。找到镜像文件位置,安装,配置2、显示安装完成,打开Windows10系统 三、…

单链表的合并

分数 5 作者 李卫明 单位 杭州电子科技大学 1.2 编写程序,在第1题(第1题:编写程序,建立2个带头结点单链表,输入若干整数将正整数插入第1个单链表,将负整数插入第2个单链表,插入前和插入后单链表保持递增…

UI设计速成课:理解模态窗口与非模态窗口的区别

我们日常所说的弹性框架是非常笼统的概念。我们习惯性地称之为对话框架、浮动层和提示条。弹性框架可以分为两种:模态弹性框架和非模态弹性框架。产品需要弹性框架来传递信息,用户需要弹性框架来接受反馈,但是没有经过推敲的弹出窗口设计很容易让用户感到…

最新版首发 | 手把手教你安装 Vivado2024.1(附安装包)

Q:Vivado出2024版了!不知迪普微有没有对应的安装包呢? A:有的!回复“Vivado2024.1”即可获得相应安装包哦~ Q:好哒~但是我不会安装,可否安排一期安装教程? A:立马安排&…

Gin 详解

Gin 介绍 gin框架是一个基于go语言的轻量级web框架,它具有高效性、灵活性、易扩展性路由 gin框架使用的是定制版的httprouter 其路由原理是大量使用公共前缀的树结构,注册路由的过程就是构造前缀树的过程。 具有公共前缀的节点也共享一个公共父节点。…

怎么移除pdf文件编辑限制,有哪些方法?

PDF是我们在学习或工作中常常应用到的一种文件格式,因为它的跨平台性和文档保真度而备受欢迎。但是,有时我们会遇到PDF编辑权限被限制了,那么pdf解除编辑限制可以用什么方法呢?别急,接下来,本文将深入探讨如…

关于Panabit在资产平台中类型划分问题

现场同事问了一个问题:Panabit能不能当做CentOS接入? 我第一反应是:Panabit是个什么鬼?为啥要混编接入?后期维护都是事啊。所以,我就想回答:不能! 但是,最好要给出一个…

通过sql语句直接导出excel文件

SELECT column1 as 名字 FROM your_table INTO OUTFILE /path/to/your_file.csv FIELDS TERMINATED BY , ENCLOSED BY " LINES TERMINATED BY \n 这里的注意事项是,INTO OUTFILE 这后面的路径需要通过下面的SQL查出来 show variables like %secure%; 操作步骤…

构建多模态模型,生成主机观测指标,欢迎来战丨2024天池云原生编程挑战赛

在当前云计算和微服务架构日益普及的背景下,企业和开发者对云资源的依赖日益加深。Elastic Compute Service(ECS)作为提供计算能力的核心服务,承担着众多的业务。随着微服务架构的广泛应用,任务的部署和执行变得更为灵…

AWS亚马逊云必须要实名吗?

AWS需要实名验证吗?为什么?对于这些问题有不少人存在疑惑,现由aws的合作伙伴九河云进行讲解: 在注册AWS账户时,需要提供基本信息,包括电子邮件地址、密码和账户名称,并确保密码复杂度足够强以保…

mysql密码过期的修改(Your password has expired. ..)

参考文章:mysql密码过期的修改方法(your password has expired)_我是知青-RuoYi 若依 (csdn.net) 问题:Your password has expired. To log inyou must change it using a clientthat supports expired passwords. 解决方式&…

无线领夹麦克风哪个牌子好用?一文揭秘哪种领夹麦性价比最高!

​无线领夹麦克风,无疑是现代音频技术的杰出代表。它摆脱了传统有线麦克风的束缚,让声音的传播更加自由、灵活。无论是追求极致音质的音乐爱好者,还是需要高效沟通的商务人士,无线领夹麦克风都能满足你的需求,让你的声…

在面试中展示自己的系统架构设计能力

在面试中展示自己的系统架构设计能力是一个关键过程,以下是一些建议,帮助你充分展示你的专业能力和经验: 1. 准备充分的项目案例: 挑选一两个你最为熟悉和自豪的项目案例,并事先准备好详细的介绍和说明。突出在这些项目中你如何运用架构设计原则和技术,解决了哪些挑战,…

人的酒量到底有多大,多长时间可以练到千杯不醉?

人的酒量是指一个人能够消耗多少酒精而不至于出现明显的不适或醉酒现象,它受到多种因素的影响。下面将详细解释决定酒量的主要因素: 遗传因素:遗传在决定一个人的酒量上扮演了重要角色。研究表明某些基因变异,如酒精脱氢酶和乙醛…

Kantana和The Sandbox联手打造元宇宙娱乐的未来

The Sandbox 是一个开创性的元宇宙、游戏和创作平台,泰国领先的娱乐公司 Kantana 很高兴地宣布双方将建立合作关系,共同打造元宇宙娱乐的未来。 此次合作结合了 Kantana 引以为傲的故事讲述专长和The Sandbox 的用户生成内容 (UGC) 工具,创建…

Shardingsphere-Proxy 5.5.0部署

Shardingsphere-Proxy 5.5.0部署 Shardingsphere系列目录:背景下载安装包Linux解压安装包修改配置文件global.yamldatabase-sharding.yaml 引入数据库驱动启动代理连接代理数据库Navicate工具连接MYSQL客户端连接 Shardingsphere系列目录: 【Springboot…

分布式系统之衡量指标:性能、资源、可用性和可扩展性

分布式系统的重要指标:性能、资源、可用性和可扩展性 在设计和评估分布式系统时,性能、资源占用、可用性和可扩展性是四个关键的指标。这些指标帮助我们理解系统在不同条件下的表现,并指导我们进行优化和改进。以下是对这些指标的详细描述和分…

山东大学软件学院创新项目实训开发日志——收尾篇

山东大学软件学院创新项目实训开发日志——收尾篇 项目名称:ModuFusion Visionary:实现跨模态文本与视觉的相关推荐 -------项目目标: 本项目旨在开发一款跨模态交互式应用,用户可以上传图片或视频,并使用文本、点、…