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"]))
相关文章:
Python基础-引用参数、斐波那契数列、无极分类
1.引用参数的问题 (1)列表(list) 引用参数,传地址的参数,即list1会因list2修改而改变。 list1 [1,2,3,4] list2 list1 print(list1) list2[2] 1 print(list2) print(list1)非引用参数,不传…...
【MySQL统计函数count详解】
MySQL统计函数count详解 1. count()概述2. count(1)和count(*)和count(列名)的区别3. count(*)的实现方式 1. count()概述 count() 是一个聚合函数,返回指定匹配条件的行数。开发中常用来统计表中数据,全部数据,不为null数据,或…...
大数据的发展,带动电子商务产业链,促进了社会的进步【电商数据采集API接口推动电商项目的源动力】
最近几年计算机技术在诸多领域得到了有效的应用,同时在多方面深刻影响着我国经济水平的发展。除此之外,人民群众的日常生活水平也受大数据技术的影响。 在这其中电子商务领域也在大数据技术的支持下,得到了明显的进步。虽然电子商务领域的发…...
Python类中变量定义详解
✨前言: Python中的类可以定义两种类型的变量:类变量和实例变量。 类变量(Class Variables): 类变量是在类级别上定义的变量,它们是对所有实例共享的。这意味着类变量只有一个副本,无论你创建了…...
c++ extern 关键字详解
extern关键字在C中用于声明变量或函数的外部链接。它通常用于以下几种场景: 声明全局变量:在一个文件中定义变量,在其他文件中使用extern声明该变量,以便在多个文件之间共享。C和C混合编程:在C代码中引用C语言编写的函…...
计算机网络:运输层 - TCP 流量控制 拥塞控制
计算机网络:运输层 - TCP 流量控制 & 拥塞控制 滑动窗口流量控制拥塞控制慢开始算法拥塞避免算法快重传算法快恢复算法 滑动窗口 如图所示: 在TCP首部中有一个窗口字段,该字段就基于滑动窗口来辅助流量控制和拥塞控制。所以我们先讲解滑…...
Python学习打卡:day10
day10 笔记来源于:黑马程序员python教程,8天python从入门到精通,学python看这套就够了 目录 day1073、文件的读取操作文件的操作步骤open()打开函数mode常用的三种基础访问模式读操作相关方法read()方法readlines()方法readline()方法for循…...
新书速览|Ubuntu Linux运维从零开始学
《Ubuntu Linux运维从零开始学》 本书内容 Ubuntu Linux是目前最流行的Linux操作系统之一。Ubuntu的目标在于为一般用户提供一个最新的、相当稳定的、主要由自由软件构建而成的操作系统。Ubuntu具有庞大的社区力量,用户可以方便地从社区获得帮助。《Ubuntu Linux运…...
[Qt的学习日常]--窗口
前言 作者:小蜗牛向前冲 名言:我可以接受失败,但我不能接受放弃 如果觉的博主的文章还不错的话,还请点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、窗口的分…...
Vue发送http请求
1.创建项目 创建一个新的 Vue 2 项目非常简单。在终端中,进入您希望创建项目的目录(我的目录是D:\vue),并运行以下命令: vue create vue_test 2.切换到项目目录,运行项目 运行成功后,你将会看到以下的编译成功的提示…...
学习使用js和jquery修改css路径,实现html页面主题切换功能
学习使用js和jquery修改css路径,实现html页面主题切换功能 效果图html代码js切换css关键代码jquery切换css关键代码 效果图 html代码 <!DOCTYPE html> <html> <head><meta charset"utf-8"><title>修改css路径</title&g…...
(转)请介绍一下Redis的数据淘汰策略
1. **NoEviction(不淘汰)**:当内存不足时,直接返回错误,不淘汰任何数据。该策略适用于禁止数据淘汰的场景,但需要保证内存足够。 2. **AllKeysLFU(最少使用次数淘汰)**:…...
APP自动化测试-Appium常见操作之详讲
一、基本操作 1、点击操作 示例:element.click() 针对元素进行点击操作 2、初始化:输入中文的处理 说明:如果连接的是虚拟机(真机无需加这两个参数,加上可能会影响手工输入),在初始化配置中…...
写给大数据开发:谈谈数仓建模的反三范式
在数仓建设中,我们经常谈论反三范式。顾名思义,反范式化指的是通过增加冗余或重复的数据来提高数据库的读性能。简单来说,就是浪费存储空间,节省查询时间。用行话讲,这就是以空间换时间。听起来像是用大炮打蚊子&#…...
Stable diffusion 3 正式开源
6月12日晚,著名开源大模型平台Stability AI正式开源了,文生图片模型Stable Diffusion 3 Medium(以下简称“SD3-M”)权重。 SD3-M有20亿参数,平均生成图片时间在2—10秒左右推理效率非常高,同时对硬件的需求…...
如何配置node.js环境
文章目录 step1. 下载node.js安装包step2. 创建node_global, node_cache文件夹step3.配置node环境变量step3. cmd窗口检查安装的node和npm版本号step4. 设置缓存路径\全局安装路径\下载镜像step5. 测试配置的nodejs环境 step1. 下载node.js安装包 下载地址:node.js…...
python tensorflow 各种神经元
感知机神经元(Perceptron Neuron): 最基本的人工神经元模型,用于线性分类任务。 import numpy as npclass Perceptron:def __init__(self, input_size, learning_rate0.01, epochs1000):self.weights np.zeros(input_size 1) #…...
Gone框架介绍27 - 再讲 Goner 和 依赖注入
gone是可以高效开发Web服务的Golang依赖注入框架 github地址:https://github.com/gone-io/gone 文档地址:https://goner.fun/zh/ 文章目录 Goner 和 依赖注入Goner的定义依赖标记Goners 注册Priest函数 Goner 和 依赖注入 Gone 作为一个依赖注入框架&am…...
【Python/Pytorch 】-- 滑动窗口算法
文章目录 文章目录 00 写在前面01 基于Python版本的滑动窗口代码02 算法效果 00 写在前面 写这个算法原因是:训练了一个时序网络,该网络模型的时序维度为32,而测试数据的时序维度为90。因此需要采用滑动窗口的方法,生成一系列32…...
Clickhouse集群create drop database可删除集群数据库或只删除本地数据库
集群环境下,在任意一个节点创建数据库,如果加上了ON CLUSTER clustername,则在集群环境的所有节点上都创建了该数据库,并在集群环境的所有节点上都创建了该数据库对应的目录,且数据库的metadata_path对应的目录路径在所…...
【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...
shell脚本--常见案例
1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件: 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...
自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...
中医有效性探讨
文章目录 西医是如何发展到以生物化学为药理基础的现代医学?传统医学奠基期(远古 - 17 世纪)近代医学转型期(17 世纪 - 19 世纪末)现代医学成熟期(20世纪至今) 中医的源远流长和一脉相承远古至…...
MinIO Docker 部署:仅开放一个端口
MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...
深入浅出Diffusion模型:从原理到实践的全方位教程
I. 引言:生成式AI的黎明 – Diffusion模型是什么? 近年来,生成式人工智能(Generative AI)领域取得了爆炸性的进展,模型能够根据简单的文本提示创作出逼真的图像、连贯的文本,乃至更多令人惊叹的…...
