自学Python一 迷茫中的开端!
有心学习一下Python,多门技术多条路啊。经历了找教程,看代码,写demo,这东西入门容易精通难啊!又因为请了两周婚假彻底忘光光。想了想自己还是边复习边写点什么东西吧。很多技术,新东西都是看了n多,看了n多但是却不会写,不会用。一是没有实践,二是没有养成那种思维方式!这篇就当是一篇流水账好了!
Python 是 What?
1.解释性语言(运行前不需要编译,如php)
2.动态类型语言(声明变量的时候不需要说明变量类型)
面向对象的Python
Python非常适合oop。函数和类都是第一类对象,函数既能返回函数类型也可以接受函数输入。支持通过组合和继承的方式定义类。注意:Python中没有访问说明符(public,private),这么设计的依据是“大家都是成年人了 23333”
Python安装及编译器配置及基础教程
这个就根据自己喜好了,可以用文本编辑器Vim或者Sublime Text,或者Pycharm,或者用Eclipse+Pydev 或者 VS2013 + python tools (请允许我保留我大vs一席之地!)
入门教程:基础教程 博客类教程: Vamei大哥的python系列 廖雪峰老师的博客教程
我接下来写的基础部分基本都是综合了两位大神的一些内容进行了实践,链接已上!支持开源,保护版权!
那么接下来,我将尝试根据自己遇到的困难,克服自己的懒惰与眼高手低,逐一的去记录python的优雅!
Action!
Python中的屠龙刀(用好了妙用无穷哦!)
一、 切片
list!众所周知,列表。有一系列内置方法的列表,如len(filelist) , filelist.append('xx.jpg') , filelist.insert(1,'xx.jpg') , filelist.pop() filelist.pop(index)等
tuple!元组,与list不同的是 元组初始化之后无法改变,所以没有list的insert() append()等方法,也不能重新赋值!
有一个tuple如下:
1 t = ('a','b',['c','d']) 2 t[0] = 'A' #error 3 t[3][0] = 'C' #right
好了,其实这也没什么难得,比c指针哪里好理解多了!谈这两个的原因是因为他设计到了python的高级特性:切片!
对于一个list,打印出其所有元素怎么办,首先想到的是for循环遍历,在python中你可以这样:
1 >>>L = list(range(100)) 2 >>>L 3 [0,1,2,3,4,5...,99] 4 5 >>>L[:] 6 [0,1,2,3,4,5...,99] 7 8 >>>L[0:10] #取索引0-索引10之间的数字(索引从0开始可以省略为L[:10]) 9 [0,1,2,3,4,5,6,7,8,9] 10 11 >>>L[-10:] #取倒数索引后10个数字 12 [90,91,92,93,94,95,96,97,98,99] 13 14 >>>L[10:20:2] #取索引10-索引20之间的数,每隔2个取一个 15 [10,12,14,16,18]
tuple也可以这样,切片后得到的还是一个tuple,字符串也支持切片!
1 >>>'ABCDEFG'[:3] 2 'ABC' 3 >>>'ABCDEFG'[::2] 4 'ACEG'
list排序
1.list.sort(func=None,key=None,reverse=False)
2.sorted(list)
当然,访问list或者tuple的时候要注意索引不要超出,毕竟大家都是成年人了。。。不得不说,这个切片太方便了。
二、迭代
这个就不用多说了,在c#中经常用到,在访问数组,List,字典等等的时候经常foreach了!在Python中也一样,只要是Iterable类型就可以进行迭代!
1 >>>from collections import Iterable 2 >>>isinstance('abc',Iterable)#字符串是否可迭代 3 True 4 >>>ininstance([1,2,3],Iterable)#列表是否可迭代 5 True 6 7 #迭代时可以引用多个变量 8 >>>for x,y in [(1,1),(2,2),(3,3)]: 9 print(x,y) 10 1 1 11 2 2 12 3 3 13 #等价于 14 >>>for item in [(1,1),(2,2),(3,3)]: 15 print(item[0],item[1]) 16 17 #python 内置的enumerate可以变列表变成索引-元素对 18 >>>for i,value in enumerate(['a','b','c'])" 19 print(i,value) 20 0 a 21 1 b 22 2 c
(未完待续。。。下一篇,lambda函数 列表生成器 装饰器)