“人造太阳”计划

python 解压序列

狂风中的少年 提交于 2019-11-26 20:50:58
任何的序列/可迭代对象可以通过赋值语句解压并赋值给多个变量。 >>> a,b,c = 'hel' >>> a 'h' >>> >>> b 'e' >>> c 'l' >>> s_iter = iter(s) >>> a,b,c = s_iter >>> a 'h' >>> b 'e' >>> >>> c 'l' 但是前提是变量数量必须跟序列元素的个数相同。 >>> a,b,c = "hello" Traceback (most recent call last): File "<input>", line 1, in <module> ValueError: too many values to unpack (expected 3) #hello 5个去解压不行! 现在的需求是:给定一个序列,然后求其 开头和最后一个 ,(不能使用索引!) 1 >>> a,*_,c = l 2 >>> a 3 10 4 >>> c 5 7 6 >>> _ 7 [3, 5, 6, 8, 9, 7, 5, 4, 1, 10, 20, 5, 6] 来源: https://www.cnblogs.com/zach0812/p/11333102.html

迭代器和生成器

空扰寡人 提交于 2019-11-26 20:31:02
楔子 假如我现在有一个列表l=['a','b','c','d','e'],我想取列表中的内容,有几种方式? 首先,我可以通过索引取值l[0],其次我们是不是还可以用for循环来取值呀? 你有没有仔细思考过,用索引取值和for循环取值是有着微妙区别的。 如果用索引取值,你可以取到任意位置的值,前提是你要知道这个值在什么位置。 如果用for循环来取值,我们把每一个值都取到,不需要关心每一个值的位置,因为只能顺序的取值,并不能跳过任何一个直接去取其他位置的值。 但你有没有想过,我们为什么可以使用for循环来取值? for循环内部是怎么工作的呢? 迭代器 python中的for循环 要了解for循环是怎么回事儿,咱们还是要从代码的角度出发。 首先,我们对一个列表进行for循环。 for i in [1,2,3,4]: print(i) 上面这段代码肯定是没有问题的,但是我们换一种情况,来循环一个数字1234试试 for i in 1234 print(i) 结果: Traceback (most recent call last): File "test.py", line 4, in <module> for i in 1234: TypeError: 'int' object is not iterable 看,报错了!报了什么错呢?“TypeError: 'int' object

C++标准库(七)之traits技术

有些话、适合烂在心里 提交于 2019-11-26 20:18:21
C++标准库(七)之traits技术 traits技术 原理:利用template的参数推导机制获取传入的参数型别。 template<typename T> struct Iter { typedef T value_type; .... } template<typename T> typename T::value_type func(T* ite) {return *ite;} 这种程度,依旧会遇到一个问题:如果不是一个class type(比如指针,引用),就无法进行正确的参数推导。可以使用模板偏特化来处理这种情形: template<typename T> struct Iter<T*> { typename T value_type; }; 我们需要处理的核心问题: 通过traits技术如何获得iterator描述的型别? template<typename T> struct iterator_traits { typedef typename T::iterator_category iterator_category; typedef typename T::value_type value_type; typedef typename T::difference_type difference_type; typedef typename T::pointer

PAT甲级题分类汇编——线性

空扰寡人 提交于 2019-11-26 20:14:31
线性类,指线性时间复杂度可以完成的题。在1051到1100中,有7道: 题号 标题 分数 大意 时间 1054 The Dominant Color 20 寻找出现最多的数 200ms 1061 Dating 20 寻找字符串中相同字符 200ms 1071 Speech Patterns 25 寻找出现最多的单词 300ms 1077 Kuchiguse 20 字符串共同后缀 150ms 1082 Read Number in Chinese 25 中文读数 400ms 1084 Broken Keyboard 20 比较两序列的差异 200ms 1095 Cars on Campus 30 模拟车辆进出 300ms 可以看到线性题一般分数不高,一般只有模拟事件的题会出30分,但也不难。 这种题一般一看就会做(最大子列和除外),难度一般在细节处理(所有PAT题都是)和时间常数上。 关于细节处理,分数低的题,本来就简单,做的时候容易想起一些细节问题,在第一次提交之前就处理好了。 关于时间限制,其他题时间限制一般都是400ms,但线性类时间更严格的比较多,这时候就要小心常数了。 仔细阅读了一下7道题,决定做 1054 、 1071 、 1082 和 1095 一共4道。 1054: 放在线性分类下,就要用线性方法做。用 std::map 做起来一看就很简单,为了挑战自己,换一种方法。

主成分分析法

房东的猫 提交于 2019-11-26 19:41:53
目录 主成分分析法 一、主成分分析的理解 二、使用梯度上升法求解PCA 三、求数据的前n个主成分 四、将高维数据向低维数据映射 五、scikit-learn中的PCA 六、对真实数据集MNIST使用PCA 七、使用PCA降噪 八、PCA与人脸识别 我是尾巴: 主成分分析法 主成分分析法:(Principle Component Analysis, PCA),是一个非监督机器学习算法,主要用于数据降维,通过降维,可以发现便于人们理解的特征,其他应用:可视化和去噪等。 一、主成分分析的理解 ​ 先假设用数据的两个特征画出散点图,如果我们只保留特征1或者只保留特征2。那么此时就有一个问题,留个哪个特征比较好呢? ​ 通过上面对两个特征的映射结果可以发现保留特征1比较好,因为保留特征1,当把所有的点映射到x轴上以后,点和点之间的距离相对较大,也就是说,拥有更高的可区分度,同时还保留着部分映射之前的空间信息。那么如果把点都映射到y轴上,发现点与点距离更近了,这不符合数据原来的空间分布。所以保留特征1相比保留特征2更加合适,但是这是最好的方案吗? ​ 也就是说,我们需要找到让这个样本间距最大的轴?那么如何定义样本之间的间距呢?一般我们会使用方差(Variance),Var(x)=\frac{1}{m}\sum_{i=1}^m(x_{i}-\overline{x})^2,找到一个轴

零零散散的python笔记 2

懵懂的女人 提交于 2019-11-26 19:16:31
python2和python3的兼容性方面 工具 2to3 python3中自带的工具,可以检查python2升级到python3的diff: 2to3 x.py 2to3 -w x.py # 检查diff的同时,修改原文件并备份 https://docs.python.org/zh-cn/3/library/2to3.html 根据版本来判断 根据sys.version_info.major来判断Python的版本,根据不同的版本导入不同的库。 # -*- coding: utf-8 -*- import sys if sys.version_info.major == 2: # Python2 from urllib import urlencode from urllib import quote from urlparse import urlparse import urllib2 as request else: # Python3 from urllib.parse import urlencode from urllib.parse import quote from urllib.parse import urlparse import urllib.request as request # do something 一些引入 from __future__

STL map部分用法示例

白昼怎懂夜的黑 提交于 2019-11-26 18:36:33
1. map的构造函数 map共提供了6个构造函数,这块涉及到内存分配器这些东西,略过不表,在下面我们将接触到一些map的构造方法,这里要说下的就是,我们通常用如下方法构造一个map: map< int , string > mapStudent; 2. 数据的插入 在构造map容器后,我们就可以往里面插入数据了。这里讲三种插入数据的方法: 第一种:用insert函数插入pair数据 #include <map> #include <stdlib.h> #include <iostream> #include < string > using namespace std; int main ( int argc, char * argv[] ) { map < int , string > mapStudent; map < int , string > ::iterator iter; mapStudent.insert (pair < int , string > ( 1 , " One " )); mapStudent.insert (pair < int , string > ( 2 , " Two " )); mapStudent.insert (pair < int , string > ( 3 , " Three " )); for (iter =

HDU2094 产生冠军

大城市里の小女人 提交于 2019-11-26 17:59:05
产生冠军 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 26594 Accepted Submission(s): 11947 Problem Description 有一群人,打乒乓球比赛,两两捉对撕杀,每两个人之间最多打一场比赛。 球赛的规则如下: 如果A打败了B,B又打败了C,而A与C之间没有进行过比赛,那么就认定,A一定能打败C。 如果A打败了B,B又打败了C,而且,C又打败了A,那么A、B、C三者都不可能成为冠军。 根据这个规则,无需循环较量,或许就能确定冠军。你的任务就是面对一群比赛选手,在经过了若干场撕杀之后,确定是否已经实际上产生了冠军。 Input 输入含有一些选手群,每群选手都以一个整数n(n<1000)开头,后跟n对选手的比赛结果,比赛结果以一对选手名字(中间隔一空格)表示,前者战胜后者。如果n为0,则表示输入结束。 Output 对于每个选手群,若你判断出产生了冠军,则在一行中输出“Yes”,否则在一行中输出“No”。 Sample Input 3 Alice Bob Smith John Alice Smith 5 a c c d d e b e a d 0 Sample Output Yes No

STL MAP 详解 (zz)

耗尽温柔 提交于 2019-11-26 17:40:56
STL MAP 详解 (zz) 原文链接: http://www.cppblog.com/MiYu/archive/2010/08/25/124656.html 由于STL是一个统一的整体,map的很多用法都和STL中其它的东 西结合在一起;map中由于它内部有序,由红黑树保证,因此很多函数执行的时间复杂度都是log2N的,如果用map函数可以实现的功能,而STL Algorithm也可以完成该功能,建议用map自带函数,效率高一些……Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字 的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一 颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有序的好处。下面举例说明什么是一对一的数据映射。比如一个班级中,每个学生的学号跟他的姓名就存在着一一映射的关系,这个模型用map可能轻易描述,很明显学 号用int描述,姓名用字符串描述(本篇文章中不用char *来描述字符串,而是采用STL中string来描述), 下面给出map描述代码:Map<int, string> mapStudent; 1.

蚁群算法

落花浮王杯 提交于 2019-11-26 16:58:32
原理==书上有==懒的写了_(:з」∠)_ 写了TSP问题,用的数据还是几天前写遗传算法 模拟退火算法解TSP问题的数据,算出来的结果比前面几个算法好多了 x=[41 94;37 84;54 67;25 62;7 64;2 99;68 58;71 44;54 62;83 69;64 60;18 54;22 60; 83 46;91 38;25 38;24 42;58 69;71 71;74 78;87 76;18 40;13 40;82 7;62 32;58 35;45 21;41 26;44 35;4 50]; n=size(x,1); d=zeros(n,n); for i=1:n for j=1:n if i>j d(i,j)=(sum((x(i,:)-x(j,:)).^2)).^0.5; d(j,i)=d(i,j); if i==j d(i,j)=1e-4; end end end end %初始参数 m=50; %蚂蚁数量 alpha=1; %信息素重要程度因子 beta=5; %启发函数重要程度因子 rho=0.1; %信息素挥发因子 Q=1; %常系数 Eta=1./d; %启发函数 距离的倒数 Tau=ones(n,n); %信息素矩阵 table=zeros(m,n); %路径记录表 iter=1; %迭代次数初值 iter_max=200; %最大迭代次数