1、明确学习目标,不急于求成,不好高骛远
当下是一个喧嚣、浮躁的时代。我们总是被生活中大量涌现的热点所吸引,几乎没有深度阅读和思考的时间和机会。要知道学习是需要沉下心来慢慢钻研的,是长期的;同时,学习不应该被赋予太多的功利色彩。一个 Python 程序员的成长路线图应该是这样子的:基础语法–>;语感训练–>;课题练习–>;分方向继续学习–>;中级程序员–>;拓展深度和广度–>;高级程序员。
然而,很多新手的学习路线图却是这样子的:学完基础语法之后,不了解 HTML 协议和 Ajax 异步请求,就兴冲冲研究爬虫去了;或者,学完基础语法,就去搞视觉识别,连 OpenCV 的数据结构都看不懂;甚至,学完基础语法就直接研究神经网络,结果是重演了一遍从入门到放弃。
对于刚入门学习Python的同学来说,要记住不急于求成,不好高骛远,一步一步,稳扎稳打,功到自然成。不急于求成,可以避免走弯路,非但不会延缓你成长的速度,反倒会节省你的时间。不好高骛远,达成一个目标,再制定下一个目标,在连续的成功和进步中,建立起自信心,激发出更强的学习兴趣。
2、习惯使用IDLE,这是学习Python好的方式
解释型语言的优势,就是可以写一句执行一句,想到哪儿写到哪儿,不必像编译型语言那样得把程序全部写完,编译成功后才能运行。推荐使用Python的IDLE,甚至可以拿它当计算器用。很多时候,可以用IDLE验证代码的写法是否正确,查看模块是否安装成功以及版本号。IDLE支持tab键自动补齐,可用这个功能查看某个对象的方法和属性。
零基础入门学习能学到的有限,还是系统学习全面。
Python列表定义:按特定顺序排列的元素组成。在Python中,用方括号[]来表示列表,并用逗号来分隔其中的元素。Python列表是编程中很常见的数据类型 。
列表是一种可修改的集合类型,其元素可以是数字、string等基本类型,也可以是列表、元组、字典等集合对象,甚至可以是自定义的类型。其定义方式如下:>>> nums = [1,2,3,4]>>> type(nums)>>> print nums[1, 2, 3, 4]>>> strs = ["hello","world"]>>> print strs['hello', 'world']>>> lst = [1,"hello",False,nums,strs]>>> type(lst)>>> print lst[1, 'hello', False, [1, 2, 3, 4], ['hello', 'world']]
下面我们来看一下列表中有哪些常见的方法:count():统计某个元素在列表中出现的次数。index():从列表中找出某个值第一个匹配项的索引位置。append():在列表末尾添加新对象。extend():在列表末尾一次性追加另一个序列的多个值。insert():在列表的指定位置插入对象。pop():移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。remove():移除列表中某个值的第一个匹配项。reverse():将列表中的元素反向,不重新拷贝一个列表。reversed():将列表中的元素反向,重新拷贝一个列表。sort():将列表中的元素排序,不重新拷贝一个列表。sortd():将列表中的元素排序,重新拷贝一个列表。copy():浅拷贝,只是给原来的列表贴上了一个新标签,对于一个复杂对象的子对象并不会完全复制,如果有子列表,改变原来的值,新的拷贝对象也会改变。deepcopy():深拷贝,将复杂对象的每一层复制一个单独的个体出来。就是完全拷贝。常见内置函数:max()、min()、sum()、len()、all()、any()、zip()、enumerate()
一些常用的方法1. 逆转字符串的三种方法1.1. 模拟C++中方法, 定义一个空字符串来实现 通过设置一个空字符串, 然后讲参数中的字符串从后往前遍历, 使用字符串的加法合并为新的字符串 复制代码 代码如下:def reverse(text) : str = '' index = len(text) - 1 while index >= 0 : str += text[index] index -= 1 return str1.2. 使用切片法 这个是Python中的一个特性, 切片可以取负值,这是采用切片的方法,设置步长为-1,这样就实现了反过来排序。
复制代码 代码如下:def reverse_1(text) : return text[::-1]1.3. 使用列表 采用列表的reverse方法,先将text转换为列表,然后通过reverse方法反转,然后在通过join连接为字符串。复制代码 代码如下:def reverse_2(text) : temp = list(text) temp.reverse() return ''.join(temp)2. 使用reduce 使用匿名函数和reduce() 复制代码 代码如下:def reverse_3(text) : return reduce(lambda x, y : y + x, text) print reverse_3("Hello")3. 遍历字典的四种方法 复制代码 代码如下:dict={"a":"apple","b":"banana","o":"orange"} print "##########dict######################" for i in dict: print "dict[%s]=" % i,dict[i] print "###########items#####################" for (k,v) in dict.items(): print "dict[%s]=" % k,v print "###########iteritems#################" for k,v in dict.iteritems(): print "dict[%s]=" % k,v print "###########iterkeys,itervalues#######" for k,v in zip(dict.iterkeys(),dict.itervalues()): print "dict[%s]=" % k,v4. 遍历list的三种方法 复制代码 代码如下:for key in lst : print key for i in range(len(lst)) : print lst[i] for index, key in enumerate(lst) : print key //index是list的索引5. 字典排序的方法 字典按照value的值从大到小的顺序来排序(默认从小到排序)。
复制代码 代码如下:dic = {'a':31, 'bc':5, 'c':3, 'asd':4, 'aa':74, 'd':0} dict= sorted(dic.iteritems(), key=lambda d:d[1], reverse = True) print dict//输出的结果:[('aa', 74), ('a', 31), ('bc', 5), ('asd', 4), ('c', 3), ('d', 0)] 下面我们分解下代码 print dic.iteritems() 得到[(键,值)]的列表。然后用sorted方法,通过key这个参数,指定排序是按照value,也就是第一个元素d[1的值来排序。
reverse = True表示是需要翻转的,默认是从小到大,翻转的话,那就是从大到小。对字典按键(key)排序:复制代码 代码如下:dic = {'a':31, 'bc':5, 'c':3, 'asd':4, 'aa':74, 'd':0} dict= sorted(dic.iteritems(), key=lambda d:d[0]) # d[0]表示字典的键 print dict#sorted中第三个可选参数为reverse, True表示从大到小排序#默认reverse = False6. 子类和父类 子类构造函数调用父类的初始化构造函数 复制代码 代码如下:class A(object) : def __init__(self) : print "testA class B(A) : def __init__(self) : A.__init__(self) 子类调用父类的同名函数 复制代码 代码如下:super().fuleifunction()7. 更灵活的参数传递方式 复制代码 代码如下:func2(a=1, b=2, c=3) #默认参数 func3(*args) #接受任意数量的参数, 以tuple的方式传入 func4(**kargs) #把参数以键值对字典的形式传入 在变量前加上星号前缀(*),调用时的参数会存储在一个 tuple()对象中,赋值给形参。
在函数内部,需要对参数进行处理时,只要对这个 tuple 类型的形参(这里是 args)进行操作就可以了。因此,函数在定义时并不需要指明参数个数,就可以处理任意参数个数的情况。
复制代码 代码如下:def calcSum(*args): sum = 0 for i in args: sum += i print sum#调用:calcSum(1,2,3) calcSum(123,456) calcSum()#输出:65790################################# def printAll(**kargs): for k in kargs: print k, ':', kargs[k] printAll(a=1, b=2, c=3) printAll(x=4, y=5)#输出:a : 1 c : 3 b : 2 y : 5 x : 4 python的中参数可以多种形式进行组合, 在混合使用时,首先要注意函数的写法,必须遵守:1.带有默认值的形参(arg=)须在无默认值的形参(arg)之后2.元组参数(*args)须在带有默认值的形参(arg=)之后3.字典参数(**kargs)须在元组参数(*args)之后 在函数被调用时,参数的传递过程为:1.按顺序把无指定参数的实参赋值给形参2.把指定参数名称(arg=v)的实参赋值给对应的形参3.将多余的无指定参数的实参打包成一个 tuple 传递给元组参数(*args)4.将多余的指定参数名的实参打包成一个 dict 传递给字典参数(**kargs)8. lambda 表达式 lambda 表达式可以看做一种匿名函数 lambda 表达式的语法格式: lambda 参数列表: 表达式 #参数列表周围没有括号,返回值前没有 return 关键字,也没有函数名称 复制代码 代码如下:def fn(x): return lambda y: x + y#调用 a = fn(2) print a(3)#输出5 分析: fn(2)调用后, 相当于a = lambda y: 2 + y, 然后a(3)被调用时.相当于 print lambda y: 2 + 3。
1、添加元素
添加元素使用列表的内置方法append
number = [1, 2, 3, 4]
number.append(5) # number = [1, 2, 3, 4, 5]
number.append([6,7]) # number = [1, 2, 3, 4, 5, [6, 7]]
number.append({'a':'b'}) # number = [1, 2, 3, 4, [6, 7], {'a', :'b'}
可以看到强大的python列表可以嵌套任意类型
2、列表相加
要想连接两个列表,可以使用+号连接
a = [1, 2, 3]
b = [4, 5, 6]
c = a + b # c = [1, 2, 3, 4, 5, 6]
也可以使用列表内置方法extend连接两个列表
a = [1, 2, 3]
b = [4, 5, 6]
a.extend(b) # a = [1, 2, 3, 4, 5, 6]
用+号会创建一个新通对象,使用extend则在原来的对象上面修改
3、列表去重复
列表本身没有去除重复的功能,但是可以借助python的另外一个类型set(help(set)查看)
a = [1, 2, 3, 3,2, 1]
b = list(set(a)) # b = [1, 2, 3]
也可以借助字典类型的内置方法
a = [1, 2, 2, 3, 1, 3]
b = {}.fromkeys(a).keys() # b = [1, 2, 3]
可以学会的零基础
学习Python必须明确的几点:
1. 明确你将来是做什么工作的,需要掌握哪些技能,很多人连这个就不知道就盲目的学,你首先清楚,现在公司需要什么人才,你应该奔着什么目标努力。Python的学习方向有很多,主要还是web。
2. 2.系统的学习规划,规划好你每天学习的新知识和每天做的作业和练习,很多人想自学Python,两个就看完了,这样的能找到工作算是出奇了,现在学习Python想找到工作,没有4-6个月的根本不行,所以规划是一定要有的,我建议半年时间。
3. 3.注意学习方法,很多人在学习Python的时候,开始学那一刻起就选择了错误的学习方法,所以最后注定会放弃,回到原来的岗位继续做着自己不喜欢的事情,学习Python需要一定的技巧,在开始学之前多跟别人问问,不要自己盲目的自学,浪费时间。
如果只看这个图,很多人可能会看的一头雾水,特别是学过完全面向对象语言的同学, Python 是双面向的,既可以面向函数编程,也可以面向对象编程,所谓面向函数就是单独一个. py 文件,里面没有类,全是一些函数,调用的时候导入模块,通过模块名.函数名()即可调用,完全不需要类,那么你可能会问,那要类还有什么毛用? 类就是用来面向对象编程啦,类可以有自己的属性,类可以创建很多实例,每个实例可以有不同的属性,这也就保存了很多私有的数据,总之都有存在的必要.
再来看上面这张图,在类里面定义的函数就是方法,类方法需要@ classmethod 修饰并且有个隐藏参数 cls,实例方法必须有个参数 self, 静态方法必须有 @staticmethod修饰,类和实例都可以访问静态方法,实例可以访问实例方法也可以访问类方法,类可以访问类方法也可以访问实例方法,访问实例方法必须要带参数 self, 可以理解为类其实也是一个实例,类访问实例方法不带参数会报错的.类本身可以访问函数,实例却不行.
声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
蜀ICP备2020033479号-4 Copyright © 2016 学习鸟. 页面生成时间:3.360秒