def

递归之求二维数组的最短路径、给定一个整数和一个数组任意选择数组中的数累加能否得到该整数

筅森魡賤 提交于 2020-12-25 02:09:22
1.给你一个二维数组,二维数组中的每个数都是正数,要求从左上角走到右下角,每一步只能向右或向下沿途经过的数字要累加起来,返回最小路径和 1 # i,j确定则返回值固定 2 def walk(matrix, i, j): 3 if i == len(matrix)-1 and j == len(matrix[0])-1: # 到达右下角,返回节点值 4 return matrix[i][j] 5 if i == len(matrix)-1: # 到达最后一行 6 return matrix[i][j] + walk(matrix, i, j+1) # 只能向右走 7 if j == len(matrix[0])-1: # 到达最后一列 8 return matrix[i][j] + walk(matrix, i+1, j) # 只能向下走 9 right = matrix[i][j] + walk(matrix, i, j+1) # 右边位置到右下角的最短路径和 10 down = matrix[i][j] + walk(matrix, i+1, j) # 下边位置到右下角的最短路径和 11 return min(right, down) 2.给你一个数组arr,和一个整数aim。如果可以任意选择arr中的数字,能不能累加得到aim,返回true 或者 false 1 #

Python3玩转单链表——逆转单向链表pythonic版

断了今生、忘了曾经 提交于 2020-12-24 06:21:19
[本文出自天外归云的博客园] 链表是由节点构成的,一个指针代表一个方向,如果一个构成链表的节点都只包含一个指针,那么这个链表就是单向链表。 单向链表中的节点不光有代表方向的指针变量,也有值变量。所以我们定义链表,就是要定义链表中的节点,对链表的操作最后也就是对节点的操作。 这些包含数据的节点们在一种指定的结构下连接起来,成为了一种数据结构——单向链表。以上是我对单向链表的理解。 以下是我用python3对单向链表这种数据结构的一种实现,其中我用到了生成器来完成逆转单向链表这一操作,非常pythonic啊!代码如下: ''' Python版单向链表-单向链表简称单链表 单链表中所包含的基本操作: 初始化 创建 链表生成器 打印 显示调用过程 计算长度 判空 获取 删除 插入 修改 追加 逆转单向链表 ''' class Node(object): # 节点初始化 def __init__ (self, value, p= None): self.value = value self.next = p class LinkList(object): # 初始化单链表 def __init__ (self): self.head = None # 创建单链表 def create(self, node_value_list): self.head = Node(node_value

CMDB资产管理系统开发【day25】:Django 自定义用户认证

一世执手 提交于 2020-12-24 05:49:42
官方文档: https://docs.djangoproject.com/en/1.10/topics/auth/customizing/#substituting-a-custom-user-model Django 自带的用户认证系统已经可以满足大部分的情况,但也可以进行自定义来满足某些特定的需求。 Django 支持使用其他的认证系统、也可以扩展Django的User模块,还可以完全自定义新的认证模块。 定义用户认证模块,定义用户表的各个字段信息。 写在单独的文件中(官方是写在 models.py 文件中,所以后边要在 models.py 导入该文件) # custom_auth.py from django.db import models from django.contrib.auth.models import ( BaseUserManager, AbstractBaseUser ) class MyUserManager(BaseUserManager): # 定义创建登录用户和超级用户时需要的字段 def create_user(self, email, name, password=None): """ Creates and saves a User with the given email, date of birth and password. """

python_函数、局部变量与全局变量

こ雲淡風輕ζ 提交于 2020-12-24 05:45:49
#函数优点:代码重用、保持一致性、可扩展性 import time def logger(): """时间年-月-日 分""" time_format = '%Y-%m-%d %X' time_current = time.strftime(time_format) """打开文件a.txt,追加end action""" with open("a.txt",'a+') as f: f.write("%s end action\n" %time_current) def func1(): print("in the func1") logger() def func2(): print("in the func2") logger() def func3(): print("in the func3") logger() func1() func2() func3() -------------------------------------------------- 局部变量、全局变量 #注意:不应该在函数内部定义全局变量,也不能改全局变量,会导致函数混乱,难以调试 #列表、字典、集合、类,可以在局部改全局,除了字符串、整数,不能改。 #在子程序中定义的变量为局部变量,当局部变量与全局变量同名时,子程序内,局部变量启作用。其他地方,全局变量起作用。 school ='oldboy

Python之路(第六篇)Python全局变量与局部变量、函数多层嵌套、函数递归

我只是一个虾纸丫 提交于 2020-12-24 05:45:32
一、局部变量与全局变量 1、在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。 全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序。 全局变量没有任何缩进,在任何位置都可以调用。 子程序:如用def定义的函数。 作用域 一个标识符的可见范围,这就是标识符的作用域。一般常说的是变量的作用域 全局作用域(global):在整个程序运行环境中都可见 局部作用域:在函数、类等内部可见;局部变量使用范围不能超过其所在的局部作用域。 例子 NAME = "nicholas" def change_NAME(): print("change_NAME", NAME) change_NAME() print(NAME)       输出结果 change_NAME nicholas nicholas    分析:NAME = "nicholas"就是全局变量,在 change_NAME()函数体内可以直接调用打印出“change_NAME nicholas” 2、当全局变量与局部变量同名时: 在 定义局部变量的子程序内,局部变量起作用 ;在 其它地方全局变量起作用 。 例子: NAME = "nicholas" def change_NAME(): NAME = "niubi" print("change_NAME", NAME) change_NAME()

猿辅导笔试题

試著忘記壹切 提交于 2020-12-24 05:15:40
题目是这样的:一个一维数组中只有1和-1,实现程序,求和为0的最长子串长度,并在注释中给出时间和空间复杂度。思路就是在i从0到n,计算sum(i),sum(i)表示从0到i的元素之和。并保存在字典dic中,value是索引i,在往后的遍历中每得到一个sum(i)就查看dic的keys是否已有此sum(i)值,如果有则用当前i位置减去保存的i,并与maxLen比较,取大的那个。遍历结束,给出结果。时间复杂度O(n),空间复杂度O(1)。 代码如下: class Solution(object): def fun(self, l): dic = {0:-1 } sum = 0 maxLen = 0 for x in xrange(0, len(l)): sum += l[x] if sum in dic: maxLen = max(maxLen, x - dic[sum]) else : dic[sum] = x return maxLen 来源: oschina 链接: https://my.oschina.net/u/4267186/blog/3620560

Python之路Python全局变量与局部变量、函数多层嵌套、函数递归

旧街凉风 提交于 2020-12-24 05:11:05
一、局部变量与全局变量 1、在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序。 全局变量没有任何缩进,在任何位置都可以调用。 子程序:如用def定义的函数。 作用域 一个标识符的可见范围,这就是标识符的作用域。一般常说的是变量的作用域 全局作用域(global):在整个程序运行环境中都可见 局部作用域:在函数、类等内部可见;局部变量使用范围不能超过其所在的局部作用域。 例子 NAME = "nicholas" def change_NAME(): print("change_NAME", NAME) change_NAME() print(NAME) 输出结果 change_NAME nicholas nicholas 分析:NAME = "nicholas"就是全局变量,在 change_NAME()函数体内可以直接调用打印出“change_NAME nicholas” 2、当全局变量与局部变量同名时: 在定义局部变量的子程序内,局部变量起作用;在其它地方全局变量起作用。 例子: NAME = "nicholas" def change_NAME(): NAME = "niubi" print("change_NAME", NAME) change_NAME() print(NAME)   

python之路---递归函数

别说谁变了你拦得住时间么 提交于 2020-12-24 04:23:52
  我们先来讲一个故事,讲的什么呢?从前有座山,山里有座庙,庙里有个老和尚讲故事,讲的什么呢?从前有座山,山里有座庙,庙里有个老和尚讲故事,讲的什么呢?从前有座山,山里有座庙,庙里有个老和尚讲故事,讲的什么呢?从前有座山,山里有座庙,庙里有个老和尚讲故事,讲的什么呢.....   递归函数表示如下: def story(): s = """ 从前有个山,山里有座庙,庙里老和尚讲故事, 讲的什么呢? """ print (s) story() story() # 递归函数有最大递归深度,超过便会报错 初识递归 在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。 递归的定义-----在一个函数里再调用这个函数本身 递归的最大深度-----997 递归函数如果不受外力的阻止会一直执行下去。但是我们之前已经说过关于函数调用的问题,每一次函数调用都会产生一个属于它自己的名称空间,如果一直调用下去,就会造成名称空间占用太多内存的问题,于是python为了杜绝此类现象,强制的将递归层数控制在了 997。 再谈递归 来看例子: age(4) = age(3) + 2 age( 3) = age(2) + 2 age( 2) = age(1) + 2 age( 1) = 40 # 递归函数 def age(n): if n == 1 : return 40 else

Python:Python学习总结

旧巷老猫 提交于 2020-12-24 03:54:08
本文转载至 https://www.cnblogs.com/happyframework/p/3255962.html#undefined 背景 PHP的$和->让人输入的手疼(PHP确实非常简洁和强大,适合WEB编程),Ruby的#、@、@@也好不到哪里(OO人员最该学习的一门语言)。 Python应该是写起来最舒服的动态语言了,一下是一些读书笔记,最后会介绍一下高级的用法:Mixin、Open Class、Meta Programming和AOP。 文中有些地方是用2.7开发的,如果您安装的是3.x,有几点需要注意: print "xxx" 要换成 print("xxx") __metaclass__ = type 删除掉。 类型和表达式部分 你好,世界! 1 # coding=utf-8 2 3 print "你好,世界。" 乘方 1 print 2**10 变量 1 var = 1 2 print var 3 4 var = "段光伟" 5 print var 注:这里的var = xxxx不叫变量赋值,而叫变量绑定,python维护了一个符号表(变量名)以及符合对应的值,这个对应关系就叫做绑定,一个符号可以绑定任意类型的值。 获取用户输入 1 #获取用户输入 2 x = input("x:") 3 y = input("y:") 4 5 print x*y 注

TensorFlow入门——bazel编译(带GPU)

。_饼干妹妹 提交于 2020-12-24 02:54:02
这一系列基本上是属于我自己进行到了那个步骤就做到那个步骤的 由于新装了GPU (GTX750ti)和CUDA9.0、CUDNN7.1版本的软件,所以希望TensorFlow能在GPU上运行,也算上补上之前的承诺 说了下初衷,由于现在新的CUDA版本对TensorFlow的支持不好,只能采取编译源码的方式进行 所以大概分为以下几个步骤 1.安装依赖库(这部分我已经做过了,不进行介绍,可以看前边的依赖库,基本一致) sudo apt-get install openjdk-8-jdk jdk是bazel必须的 2.安装Git(有的就跳过这一步) 3.安装TensorFlow的build工具bazel 4.配置并编译TensorFlow源码 5.安装并配置环境变量 1.安装依赖库 2.安装Git 使用 sudo apt-get install git git clone --recursive https://github.com/tensorflow/tensorflow 3. 安装TensorFlow的build工具bazel 这一步比较麻烦,是因为apt-get中没有bazel这个工具 因此需要到GitHub上先下载,再进行安装 下载地址是https://github.com/bazelbuild/bazel/releases 选择正确版本下载