二、链状比较操作符 Python不用很多条件一个一个写,比较操作符可以聚合。 n = 10 result = 1 < n < 20 print(result) # True result = 1 > n <= 9 print(result) # False
标签:VBA,PowerPoint编程 这段时间趁空闲时在学习PPT编程,发现真的很有意思,短短的几行VBA代码就能让PPT活起来,惊叹! 下面分享这段时间学习PPT编程的2个小技巧,虽然很简单,但与其它办公软件使用一样,知者不难,难者不知。 技巧1:给幻灯片中的形状命名 我是Excel思维,因此如何给幻灯片中的形状命名,按Excel的习惯找了半天都没结果,但在我的执着下,最后还是找到了,异常简单! 图1 此时,在幻灯片的右侧会出现一个窗格,如下图2所示,其中显示了PPT给形状的默认名称。 图2 只需要选择该名称,输入自己的名称即可,如下图3所示。 技巧2:将幻灯片中的形状与VBA过程关联 这个操作也要打破Excel VBA思维,在Excel中可选择形状后单击右键来关联VBA过程,但PPT中不是这样的。不过,操作也很简单。
示例 1: 输入:nums = [3,2,3] 输出:3 示例 2: 输入:nums = [2,2,1,1,1,2,2] 输出:2 代码模板: class Solution { public:
简单翻译了一篇编程技巧,虽然内容上是关于 Lua 的,但实际上大部分技巧都是通用的(适用于其他语言). ,有兴趣的朋友可以找一找. -- example 1 local d = math.sqrt((x - x2)^2 + (y - y2)^2) local nx, ny = (x - x2)/d, (y - y2)/d -- example 2 local dx, dy = x - x2, y - y2 local dsq = dx^2 + dy^2 local d = math.sqrt(dsq) 2*(tile_width/2) local x = tx*tile_width + x_offset local y = ty*(tile_height/2) 避免中间(程序)对象 以我的经验来看,这条技巧 (避免中间(程序)对象)可能是编写 Lua 代码时最重要的一条优化技巧.不断的创建 table 对象不仅需要大量的创建时间,而且会给垃圾收集器带来非常大的压力,致使程序出现长时间的 GC 消耗,进而造成程序的帧率不稳
关于缓存 如果一个rdd被多个rdd依赖,就要持久化该rdd,避免被生成多次,而持久化时又有一些小技巧,如下 用persist(MEMORY_ONLY_SER) 代替persist和cache persist 会让Spark其他阶段拥有更多的内存,从而减少了和磁盘的交互,进而加快作业的执行速度 内存不够时 内存不够时,使用 MEMORY_AND_DISK_SER 避免使用DISK_ONLY和后缀为_2的持久化方式 DISK_ONLY将rdd缓存在磁盘上,基于磁盘的读写会严重影响性能 后缀为_2的持久化方式,会将rdd复制一份副本,发送到其他节点上,数据复制和网络传输的性能开销较大 使用Kryo序列化 该种序列化方式会比默认的 java序列化方式节省2到5倍的空间 分解一个job之中的transformation 尽量避免在一个transformation中处理所有的逻辑, 尽量分解成map, filter等之类的操作,这样程序会更容易理解
(其实就是判断这个数一定是奇数相加的) 由于 (n+1)^2 =n^2 + 2n + 1, = ... = 1 + (2*1 + 1) + (2*2 + 1) + ... + (2*n + 1) 注意到这些项构成了等差数列(每项之间相差2)。 例如:3^2 = 9 = 1 + 2*1+1 + 2*2+1 = 1 + 3 + 5 4^2 = 16 = 1 + 2*1 + 1 + 2*2+1 + 2*3+1 int square(int n) { int i = 1; n = n - i; while( n > 0 ) { i += 2; n } if( n == 0 ) //是某个数的平方 return 1; else //不是某个数的平方 return 0; } 2.
for (Type type : types) { for (Type t : types2) { if (some condition) { 可以考虑使用goto的情形:1.从多重循环中直接跳出 ;2. 出错时清除资源; 3.可增加程序的清晰度的情况。 anything to handle the exception. } try { foo = Integer.parseInt(StringThatCouldBeANumberOrNot2) ); System.out.println(test1 == test2); System.out.println(test1 == new String("test")); } 其他 ) { return (o1.getValue()).compareTo( o2.getValue() );
###Python高效编程技巧 如果你发现一个好的程序库,符合你的要求,不要不好意思————大部分的开源项目都欢迎捐赠代码和欢迎提供帮助——即使你不是一个Python高手。 我已经使用Python编程有多年了,即使今天我仍然惊奇于这种语言所能让代码表现出的整洁和对DRY编程原则的适用。 这些年来的经历让我学到了很多的小技巧和知识,大多数是通过阅读很流行的开源软件,如Django, Flask, Requests中获得的。 下面我挑选出的这几个技巧常常会被人们忽略,但它们在日常编程中能真正的给我们带来不少帮助。 ####1. 我并不鼓励将这里介绍的方法用在非内部的、一次性的编程中。我们可以使用一种叫做XML-RPC的协议 (相对应的是这个Python库),来做这种事情。
可以在int类型中添加Pow()方法,更快捷地计算幂 class Program { static void Main(string[] args) { int a = 2; //计算2的10次方 Console.WriteLine(a.Pow(10)); Console.ReadKey(); } } public
2、灵活运用M0指令 M0为程序暂停指令,在对零件进行粗精加工时,为了控制工件的精度,可以在粗加工结束后加M0指令来使程序暂停,通过测量来检验其尺寸是否准确,如果尺寸有误差,就可以通过刀补来修改,以保证零件的精度 5、相对坐标U、W与绝对坐标X、Z代码 这里所说的相对编程是以刀尖所在位置为坐标原点,刀尖以相对于坐标原点进行位移来编程。 就是说,相对编程的坐标原点经常在变换,运行是以现刀尖点为基准控制位移,那么连续位移时,必然产生累积误差。绝对编程在加工的全过程中,均有相对统一的基准点,即坐标原点,所以其累积误差较相对编程小。 数控车削加工时,工件径向尺寸的精度比轴向尺寸高,所以在编制程序时,径向尺寸最好采用绝对编程,考虑到加工时的方便,轴向尺寸采用相对编程,但对于重要的轴向尺寸,也可以采用绝对编程。 另外,为保证零件的某些相对位置,按照工艺的要求,进行相对编程和绝对编程的灵活使用。
用过Matlab的同学应该都知道,Matlab的慢是出了名的,但是再慢也有优化的方式,下面我们给出几个Matlab编程中常用的优化技巧。 高效编程的内容就先写这么多,后面还会继续补充。下面说一个Matlab调试中断点设置问题。在一个for循环中,比如for i=1:n,我们想在i=100的进入断点,这个时候应该怎么用? Figure 2. 条件断点设置2 这样,当程序运行到i==100时就会进入断点,不需要自己再写额外的语句。
19, 5, 16, 17, 17, 12, 19, 9, 10, 0, 20, 11, 2, 11, 10] >>> c2 = Counter(data) >>> c2 Counter({17: 4 , 11: 4, 16: 3, 10: 3, 7: 2, 8: 2, 5: 2, 2: 2, 19: 2, 18: 1, 15: 1, 12: 1, 9: 1, 0: 1, 20: 1}) >>> c2 [14] 4 >>> c2.most_common(3) # 统计频度出现最高的3个数 [(17, 4), (11, 4), (16, 3)] 2. 第二轮: {"内马尔": 1, "梅西":2, "姆巴佩": 3..} 第三轮: {"姆巴佩": 2, "C罗":2, "内马尔": 1..} >>> s2 = {x: randint(1, 4) for x in sample('abfcdrg', randint(1,5))} >>> s2 {'b': 4, 'g': 1, 'f': 1,
编程中经常会需要使用到异常处理的情况,在阅读了一些资料后,整理了关于异常处理的一些小技巧记录如下。 如何自定义异常 定义异常类 在实际编程中,有时会发现Python提供的内建异常的不够用,我们需要在特殊业务场景下的异常。这时就需要我们来定义自己的异常。 定义API异常的技巧 在自己编写API的时候,应该定义Root Exception——API中的根异常,其它异常都继承于它。 与异常相关的编程艺术 异常代替返回状态码 我们经常需要编写一些工具类的函数,往往在这些函数的处理流程中,会产生很多的状态;而这些状态也是调用者需要得到的信息。 arg type error 调用代码: result = write() if result == -1: log.error(u"type error") elif result = -2:
2、少用循环,尤其是避免多重循环嵌套,尽量用向量化的运算来代替循环操作。在必须使用多重循环的情况下,若各层循环执行的次数不同,则在循环的外层执行循环次数少的,内层执行循环次数多的。
19, 5, 16, 17, 17, 12, 19, 9, 10, 0, 20, 11, 2, 11, 10] >>> c2 = Counter(data) >>> c2 Counter({17: 4 , 11: 4, 16: 3, 10: 3, 7: 2, 8: 2, 5: 2, 2: 2, 19: 2, 18: 1, 15: 1, 12: 1, 9: 1, 0: 1, 20: 1}) >>> c2 [14] 4 >>> c2.most_common(3) # 统计频度出现最高的3个数 [(17, 4), (11, 4), (16, 3)] 2. 第二轮: {"内马尔": 1, "梅西":2, "姆巴佩": 3..} 第三轮: {"姆巴佩": 2, "C罗":2, "内马尔": 1..} >>> s2 = {x: randint(1, 4) for x in sample('abfcdrg', randint(1,5))} >>> s2 {'b': 4, 'g': 1, 'f': 1,
swift tips Swift中有很多有用的小技巧,用好了能使代码更加安全,简洁,易于理解或效率更加高效,在这记录一些编写swifty code的小技巧。 for in 循环中使用 where 语句 我们都会遇到写类似如下代码的地方: let items = [1, 2, 3, 4] for item in items { if(item % 2 2 == 0 { print(item) } Output: 2 4 3、使用filter + forEach替代 for in + where let items = [1, 2, 3, 4] items.filter{$0 % 2 == 0}.forEach { print($0) } 可以看出代码简洁度并没有很大的提升,但是语义更加清晰更容易理解。 defer big than 10 end print in defer Objective-C中也可以实现类似的功能,可以参考:Objective-C中实现Swift中的defer 5、布尔值取反 在任何编程语言中
基于以上这种所有情况,有必要来优化一下 可以利用函数式编程来优化 定义如下 type Option func(*gorm.DB) 定义 Option 是一个函数,这个函数的入参类型是*gorm.DB,返回值为空
一、根据条件在序列中筛选数据 假设有一个数字列表 data, 过滤列表中的负数 data = [1, 2, 3, 4, -5] # 使用列表推导式 result = [i for i in data = Counter(data) # 查询元素出现次数 c2[14] # 统计频度出现最高的3个数 c2.most_common(3) 对某英文文章单词进行统计,找到出现次数最高的单词以及出现的次数 第二轮:{"内马尔": 1, "梅西":2, "姆巴佩": 3..} 第三轮:{"姆巴佩": 2, "C罗":2, "内马尔": 1..} from random import randint, sample from functools import reduce # y: x & y, map(dict.keys, [s1, s2, s3]))
列表推导能够给我们答案: num = [1, 4, -5, 10, -7, 2, 3, -1] filtered_and_squared = [ x**2 for x in num if x > 0] 下例使用zip()函数一次处理两个或多个列表中的元素: alist = ['a1', 'a2', 'a3'] blist = ['1', '2', '3'] for a, b in zip(alist , blist): print a, b # a1 1 # a2 2 # a3 3 再来看一个通过两阶列表推导式遍历目录的例子: import os def tree(top): for 听起来是不是很像Java中的面向切面编程(Aspect-Oriented Programming)概念?两者都很简单,并且装饰器有着更为强大的功能。 b**2 return a**2,b**2 func(a=4, b=5, variable="hi") func(a=4, b=5) # hi # 16 25 # None # 16 25
总结下pandas使用的技巧 读取json数据并转成Python格式 计数功能实现 # 方法1 def get_counts(sequence): counts = {} # 将计数值保存在字典中 counts[x] += 1 # 存在则计数加1 else: counts[x] = 1 # 不存在则定为1 return counts # 方法2 from collections import defaultdict def get_counts2(sequence): counts = defaultdict(int) for x in