寒假本来是打算开始公司新项目,结果美工太拖了。于是一边搞其他东西,一边做leetcode。熟悉了一下django,还有复习了python,学习到了很多技巧,关于python的。
- python的三目表达式
python中是没有类似于PHP或者C++那些的三目表达式的,一开始我是比较纳闷的,因为python这样的语言,要是连这种语法结构都没有就太奇怪了。于是后来找到了类似的东西。
//这是php的写法,基本相同与其他语言
function fun()
{
return 1==2?1:2;
}
def fun():
return 1 if 1==2 else 2
- python的for循环
我在写leetcode的时候是经常使用到for循环的,因为经常有变量需要遍历,python的for循环不同与其他语言,但是我觉得使用起来其实还是蛮方便的
#这里假设有一个叫做data的list变量
for x in data:
这样的写法是直接遍历数组变量了,遍历不了下标,有时候很需要使用下标,就要使用另外一种方法
for x in range(len(data)):
for x in xrange(len(data)):
这两种方法是数组遍历下标的方法,但是有区别,range和xrange的速度上是不一样的,详细可以百度一下。
有时候会遇到一种情况,需要从数组的最后一个数往前遍历,以往PHP或者java那些的做法是for循环下标往前遍历,python也能那么写,但是有些地方需要注意。
for x in xrange(len(data)-1,-1,-1):
往前循环的时候,下标是从你传入参数的第一个数开始循环的,而不是和往后循环的时候一样的。比如:xrange(9) 循环的结果是0--8,xrange(9,-1,-1)循环的结果是9--0。之前好多次写算法的时候没注意,导致数组越界。
- python的sort函数
在C++中,sort函数是algorithm库中的一个函数,最实用的功能就是可以根据类的某项属性排序类,在vector这些地方非常实用,大一暑假项目实训的时候,写高考预录取信息系统,为了排序考生的成绩,C++的sort就帮了不少忙。
python的sort也很好用,但是主要那时候我还不够熟悉。
sort(key=lambda x:x.start)
这种写法就是可以实现类排序的写法了,Merge Intervals里,第一次用上。
sort 和 sorted
具体可以百度,这里只讲一点,就是sorted会返回一个结果,sort会改变结构。python的速度
其实python的速度相对是可以了,我在完成一道题的时候,使用了三种语言对比(C++,JAVA,PYTHON),python的速度比较中肯。递归和迭代
递归写起来很舒服,两三句话搞定,但是速度就太一般了,我在爬楼梯的时候,分别使用了迭代和递归,递归写起来不要太舒服。
class Solution {
public:
int climbStairs(int n)
{
if (n == 1 || n == 2)
return n == 1 ? 1 : 2;
return climbStairs(n - 1) + climbStairs(n - 2);
}
};
超时了,无解。
但是使用迭代,速度是2MS。
- 还有的想不起来了,没有及时总结,过年太颓废了,一行代码都没有写。leetcode的easy还有几道题,希望戒掉拖延症,这个学期内,利用琐碎的时间完成leetcode所有题目。有梦想的人不睡觉。