last

Python笔记【二】

妖精的绣舞 提交于 2020-02-27 04:21:35
之前分享过一次我在学习Python的笔记, Python笔记【一】 ,最近有些新的收获,分享一下; random.sample() 随机不重复的数 工作中,有时候是需要在数据库手动去造些数据的,有些字段类似 order_id ,一般都是不重复的(在不考虑有退款等其他异常的情况下),若要造超多数量、不重复的order_id,该如何来做? 推荐使用random.sample(); 实际 在遇到生成随机整数的时候,我第一反应就是random.randint(),我们对比下: 循环random.randint(),实际会重复,而random.sample() 不会重复,具体原因:源码中注释 字符串find() != -1 find() 检测字符串中是否包含子字符串 sub,如果指定 start 和 end 范围,则在指定范围内 检查是否包含,如果包含子字符串 返回子字符串的索引值,否则返回-1。 这儿主要是想说下 :Return -1 on failure 因为 我往往不能确定子字符串的index,反而使用 str_xx.find('xxxx) != -1 会更多。 字符串开头、结尾 startswith() \endwith() 有时候确定 某字符串是否以某子字符串为开头、结尾,就要用到startswith()、 endswith(); 这儿要说的是上面2图 鼠标所在那行 prefix

LeetCode.9.回文数

杀马特。学长 韩版系。学妹 提交于 2020-02-26 19:01:04
思路:将字符串考虑成双向列表 1.循环列表,并从头、尾相继抛出字符 2.循环结束,字符相符,返回值 具体代码如下: class Solution: def isPalindrome(self, x: int) -> bool: lst_x=list(str(x)) #int CONVERT as String isMatch=True while len(lst_x)>1 and isMatch: #LOOP LIST first=lst_x.pop() last=lst_x.pop(0) if not first==last: isMatch=False return isMatch 来源: oschina 链接: https://my.oschina.net/tedzheng/blog/3167434

python 求任意范围内水仙花数

北城以北 提交于 2020-02-26 02:10:48
代码: #水仙花数 num=int(input('请输入任意范围,将会得到其范围内的所有水仙花数:')) for i in range(1,num+1): cifang = len(str(i)) #这个数的位数,即为次方数 total = 0 #各位数N次方之和 j = i #因为后面i会用做比较,所以我不更改i的值 last_w = 0 #这个数的最后一位数 while j > 0 and cifang > 2: last_w = j % 10 #对10求余,表示这个数的最后一个数 j = j // 10 #去掉最后一位数 total += last_w ** cifang #计算各位的N次方之和 if total == i: #如果各位数的N次方之后与原数i相等,就打印 print(i) 运行结果: 来源: 51CTO 作者: 625536506 链接: https://blog.51cto.com/10888845/2473286

Pytorch Torch.utils.data.Sampler

泪湿孤枕 提交于 2020-02-25 22:45:25
Data Loading Order and Sampler For iterable-style datasets , data loading order is entirely controlled by the user-defined iterable. This allows easier implementations of chunk-reading and dynamic batch size (e.g., by yielding a batched sample at each time). The rest of this section concerns the case with map-style datasets . torch.utils.data.Sampler classes are used to specify the sequence of indices/keys used in data loading. They represent iterable objects over the indices to datasets. E.g., in the common case with stochastic gradient decent (SGD), a Sampler could randomly permute a list of

LinkedList-5

最后都变了- 提交于 2020-02-25 01:34:33
LinkedList 适用于集合元素先入先出和先入后出的场景,在队列源码中被频繁使用. LinkedList 底层数据结构是一个双向链表,整体结构如下图所示: 我们有几个概念如下: 链表每个节点我们叫做 Node,Node 有 prev 属性,代表前一个节点的位置,next 属性,代表后一个节点的位置; first 是双向链表的头节点,它的前一个节点是 null。 last 是双向链表的尾节点,它的后一个节点是 null。 当链表中没有数据时,first 和 last 是同一个节点,前后指向都是 null。 Node 的组成部分: private static class Node<E> { E item;// 节点值 Node<E> next; // 指向的下一个节点 Node<E> prev; // 指向的前一个节点 // 初始化参数顺序分别是:前一个节点、本身节点值、后一个节点 Node(Node<E> prev, E element, Node<E> next) { this.item = element; this.next = next; this.prev = prev; } } 1.追加(新增) 追加节点时,我们可以选择追加到链表头部,还是追加到链表尾部,add 方法默认是从尾部开始追加,addFirst 方法是从头部开始追加,我们分别来看下两种不同的追加方式:

Find First and Last Position of Element in Sorted Array

拈花ヽ惹草 提交于 2020-02-24 23:24:14
Given an array of integers nums sorted in ascending order, find the starting and ending position of a given target value. Your algorithm's runtime complexity must be in the order of O (log n ). If the target is not found in the array, return [-1, -1] . Example 1: Input: nums = [ 5,7,7,8,8,10] , target = 8 Output: [3,4] Example 2: Input: nums = [ 5,7,7,8,8,10] , target = 6 Output: [-1,-1] 思路:binary search标准模板走起; class Solution { public int[] searchRange(int[] nums, int target) { int[] res = {-1,-1}; if(nums == null || nums.length == 0) { return res; } res[0] = findFirstPosition(nums, target, 0,

MyBatis的深入原理分析之1-架构设计以及实例分析

久未见 提交于 2020-02-24 20:23:54
MyBatis是目前非常流行的ORM框架,它的功能很强大,然而其实现却比较简单、优雅。本文主要讲述MyBatis的架构设计思路,并且讨论MyBatis的几个核心部件,然后结合一个select查询实例,深入代码,来探究MyBatis的实现。 一、MyBatis的框架设计 注:上图很大程度上参考了iteye 上的 chenjc_it 所写的博文 原理分析之二:框架整体设计 中的MyBatis架构体图,chenjc_it总结的非常好,赞一个! 1.接口层---和数据库交互的方式 MyBatis和数据库的交互有两种方式: a.使用传统的MyBatis提供的API; b. 使用Mapper接口 1.1.使用传统的MyBatis提供的API 这是传统的传递 Statement Id 和查询参数给 SqlSession 对象,使用 SqlSession 对象完成和数据库的交互; MyBatis 提供了非常方便和简单的API,供用户实现对数据库的增删改查数据操作,以及对数据库连接信息和 MyBatis 自身配置信息的维护操作。 上述使用 MyBatis 的方法,是创建一个和数据库打交道的 SqlSession 对象,然后根据 Statement Id 和参数来操作数据库,这种方式固然很简单和实用,但是它不符合面向对象语言的概念和面向接口编程的编程习惯。由于面向接口的编程是面向对象的大趋势,

单链表的实现

廉价感情. 提交于 2020-02-24 18:05:58
在单链表中,我们需要在内部有一个头节点,我们可以通过这个头节点找到其他的节点,相当于一个线索。 纵观顺序结构的线性表和单链表的实现,难点基本上都在于添加和删除操作。基于数组的线性表中,数组的索引就相当于是线性表的序号,但在单链表中,我们没有序号这个东西,所以在添加和删除操作中,我们需要先找到指定的元素,然后才能继续进行操作。在插入操作中,我们需要同时保存有当前节点的前一个节点和当前的节点,因为当前要插入的节点要放在前一个节点的Next引用域,而当前节点要放在要插入节点的next域。删除节点与此相似。 using System ; using System . Collections . Generic ; using System . Linq ; using System . Text ; namespace DataStructure { class LinkList < T > : IListDS < T > { class Node < T > { private T data ; /// <summary> /// 数据域 /// </summary> public T Data { get { return data ; } set { data = value ; } } private Node < T > next ; /// <summary> /// 引用域

2019-2020 ACM-ICPC Latin American Regional Programming Contest

▼魔方 西西 提交于 2020-02-22 22:40:39
开学前最后一场训练了,努力搞了个8题,还算可以。就是这场题没多少我能做的,只切了两道题。 题目链接: https://codeforces.com/gym/102428 D: solver:czq 题意就是二维平面上有n颗恒星,每颗恒星有一个固定亮度。问:是否存在一条直线,从平面的一端扫到另一端,满足:对于任意两颗恒星S和T,如果S亮度大于T,那么S一定在T之前或者跟T一起同时被直线扫到。只需输出Y或N。 构造一下Y和N的例子你就会发现,对于所有亮度不同的恒星,从亮度高的恒星指向亮度低的恒星,这样我们就得到若干条向量。若答案为Y,那么必然存在一对向量,平行且方向相反,而且如果我们把所有的向量极角排序,这对平行的向量位置相邻。 1 /* basic header */ 2 #include <bits/stdc++.h> 3 /* define */ 4 #define ll long long 5 #define pb emplace_back 6 #define mp make_pair 7 #define eps 1e-8 8 #define lson (curpos<<1) 9 #define rson (curpos<<1|1) 10 /* namespace */ 11 using namespace std; 12 /* header end */ 13 14

Python3标准库:heapq堆排序算法

淺唱寂寞╮ 提交于 2020-02-22 14:38:24
1. heapq堆排序算法 堆(heap)是一个树形数据结构,其中子节点与父节点有一种有序关系。二叉堆(binary heap)可以使用一个有组织的列表或数组表示,其中元素N的子元素位于2*N+1和2*N+2(索引从0开始)。这种布局允许原地重新组织堆,从而不必再添加或删除元素时重新分配大量内存。 最大堆(max-heap)确保父节点大于或等于其两个子节点。最小堆(min-heap)要求父节点小于或等于其子节点。Python的heapq模块实现了一个最小堆。 1.1 创建堆 创建堆有两种基本方式:heappush()和heapify()。 import heapq import math from io import StringIO data = [19, 9, 4, 10, 11] def show_tree(tree, total_width=36, fill=' '): """Pretty-print a tree.""" output = StringIO() last_row = -1 for i, n in enumerate(tree): if i: row = int(math.floor(math.log(i + 1, 2))) else: row = 0 if row != last_row: output.write('\n') columns = 2 **