频道栏目
首页 > 资讯 > Python > 正文

Quick Leaner学Python

16-05-02        来源:[db:作者]  
收藏   我要投稿

作为一名资深的QL(Quick Learner),学习一门新的编程语言分分钟不在话下,Python语言,so easy,在经过如此多面向对象语言的洗礼后,接触一下函数式语言(虽然python也有面向对象)也是不错的。

我用的python版本:2.7.11,有最新的3.4

1.数据类型

布尔型:大写True,False

逻辑运算:and、or和not

空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。

2.语句与字符串

print语句:

print语句可以向屏幕上输出指定的文字。比如输出’hello, world’,用代码实现如下:

>>> print 'hello, world'

print语句也可以跟上多个字符串,用逗号“,”隔开,就可以连成一串输出:

>>> print 'The quick brown fox', 'jumps over', 'the lazy dog'

The quick brown fox jumps over the lazy dog

print会依次打印每个字符串,遇到逗号“,”会输出一个空格

print可以打印上面的数据

注释:

Python的注释以 # 开头

变量命名:变量名必须是大小写英文、数字和下划线(_)的组合,且不能用数字开头。

转义字符:

要表示字符串: Bob said "I'm OK".

代码:'Bob said \"I\'m OK\".'

raw字符串

如果一个字符串包含很多需要转义的字符,对每一个字符都进行转义会很麻烦。为了避免这种情况,我们可以在字符串前面加个前缀 r ,表示这是一个 raw 字符串,里面的字符就不需要转义了。例如:

r'\(~_~)/ \(~_~)/'

多行字符串:

可以用”’…”’表示:

'''Line 1

Line 2

Line 3'''

上面这个字符串的表示方法和下面的是完全一样的:

'Line 1\nLine 2\nLine 3'

对中文支持:

在前面加一个u

u'中文\n日文\n韩文'

当然仍可以组合使用:

ur'''Python的Unicode字符串支持"中文",

"日文",

"韩文"等多种语言'''

如果中文字符串在Python环境下遇到 UnicodeDecodeError,这是因为.py文件保存的格式有问题。可以在第一行添加注释

# -*- coding: utf-8 -*-

目的是告诉Python解释器,用UTF-8编码读取源代码,注意:加了这行语句就不用u了。

3.List

list简介:Python内置的一种数据类型列表。list是一种有序的集合,可以随时添加和删除其中的元素

构造list:直接用 [ ] 把list的所有元素都括起来,就是一个list对象。通常,我们会把list赋值给一个变量,这样,就可以通过变量来引用list:

>>> myList= ['1', '2', '3']

>>> myList# 打印myList变量的内容

['1', '2', '3']

注意:由于Python是动态语言,所以list中包含的元素并不要求都必须是同一种数据类型。

访问List:使用索引0开始,注意不要越界。

倒序索引: L[-1]为最后一个元素,-2倒数第二个,依次,注意不要越界。

添加元素:

L.append(xxx)//添加在尾部

L.insert(index, xxx) //添加在index(从0开始)前

删除元素:

L.pop()//删除并返回最后一个元素

L.pop(index)//删除索引为index的元素

替换元素:

L[index] = another//直接将索引为index的重新赋值

4.tuple(元组)

tuple简介:另一种有序的列表,和 list 非常类似,但tuple一旦创建完毕,就不能修改了。

表示:

>>> t = ('1', '2', '3')

现在,这个 t 就不能改变了,tuple没有 append()方法,也没有insert()和pop()方法。所以,没法直接往 tuple 中添加和删除元素。

但可以通过索引访问元素。

单元素:

因为用()定义单元素的tuple有歧义((1)会被当成数字1),所以 Python 规定,单元素 tuple 要多加一个逗号“,”:

>>> t = (1,)

>>> print t

(1,)

构造可变的tuple:

t 有 3 个元素:’a’,’b’和一个list:[‘A’, ‘B’],下面代码只是说明我们该变得不是tuple,而是list。

>>> t = ('a', 'b', ['A', 'B'])

>>> L = t[2]

>>> L[0] = 'X'

>>> L[1] = 'Y'

>>> print t

('a', 'b', ['X', 'Y'])

所以:元组和list都是可以相互嵌套的。

5.if-else语法

我们现在只学习不同的语法:

age = 20

if age >= 18:

print 'your age is', age

print 'adult'

print 'END'

注意: Python根据缩进来确定代码块,具有相同缩进的代码被视为一个代码块。

缩进:据说严格按照Python的习惯写法:4个空格,不要使用Tab,不要混合Tab和空格。(PS:只要记得住,还是可以用tab)

注意:不要忘记冒号。

单个if:

 

1

 

if-else:

 

2

 

if-elif-else:

对于嵌套结构的 if … else …,我们可以用 if …和多个elif … else … 的结构(即 else if):

如:

3

可以改成:

4

 

注意:执行顺序从上到下。

6.循环语句语法

看个例子就行了:

for:

 

5

 

while:

 

6

 

break:

 

7

 

continue:用法都一样

循环嵌套:

 

8

 

7.Dict

简介:一种集合,说白了就是java里的map,键值对,所以它的特点是无论多少个元素,速度都一样快,同时元素是无序的 ,key不能重复,这和hashmap都差不多,还有就是 key 的元素必须不可变,所以key不能用list。

d = {

'jimo': 95,

'love': 85,

'dog': 59

}

print len(d)#求其长度

访问: 通过d[key] 查找对应的 value

注意: key 存在,dict就返回对应的value。如果key不存在,会直接报错:KeyError

print d['jimo']

print d['cat']

 

9

 

所以一般这么写:

if 'cat' in d:#先判断下

print d['cat']

更新:直接改

d['jimo'] = 70

d['cat'] = 1#若dict里没有,会直接加进去

遍历:

print d

for key in d:

print key,':',d[key]

 

10

 

8.Set

简介:同样是一个无序不重复的集合。

创建:

s = set(['A', 'B', 'C', 'C'])

print s

 

11

 

访问Set:其实没办法访问,只能做判断:

print 'A' in s

print 'a' in s

 

12

 

遍历set:当然遍历方法和dict类似

应用:

weekdays = set(['MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT', 'SUN'])

x = 'MON'

if x in weekdays:

print 'input ok'

else:

print 'input error'

添加删除元素: add,remove

s = set(['A', 'B', 'C', 'C'])

print s

s.add('D')

print s

s.remove('A')

print s

s.remove('A')

print s

 

13

 

可看出:删除不存在的元素会报错。

9.函数

1.内置函数:

可以在官网查看函数:Functions

不要忘了引用库函数:import math math.cos(angle)

常用函数:

>>> range(1, 101)

[1, 2, 3, ..., 100]

2.自定义函数:

定义一个函数要使用 def 语句,然后是 函数名,参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用 return 语句返回。

def mysum(L):#求L中每个元素平方的和

return sum([i*i for i in L])

print mysum([1, 2, 3, 4, 5])

3.多个返回值:

def multiParams(x,y):

return x+1,y+1

x,y = multiParams(1,2)

print x,y

r = multiParams(1,2)

print r

 

14

没错,r是一个tuple

 

4.默认参数:

def defaultParams(x,y=10):

return x*2+y

x = defaultParams(1)

print x

x = defaultParams(1,2)

print x

 

15

 

5.可变参数:

def average(*args):

if len(args)!=0:

return sum(args)*1.0/len(args)

else:

return 0.0

print average()

print average(1, 2)

print average(1, 2, 3, 4)

 

16

 

10.切片

对于list和tuple都适用:

顺序切片:

L = ['a','b','c','d']

print L[0:3]#从0开始2结束

print L[1:3]

print L[:3]#从头开始0可省略

print L[:]#取所有元素

print L[::2]#第三个参数表示每N个取一个

 

17

 

倒序切片:

print L[-1:-3]

print L[:-4]

print L[-2:]

 

18

 

对字符串切片:

print 'ABCDEFG'[:3]

print 'ABCDEFG'[::2]

 

19

 

11.迭代

上面已经用过迭代。

2.索引迭代enumerate:

L = ['a','b','c','d']

for index,num in enumerate(L):

print index,':',num

for t in enumerate(L):

print t[0],':',t[1]

 

20

 

zip()函数可以把两个 list 变成一个 list:

>>> zip([10, 20, 30], ['A', 'B', 'C'])

[(10, 'A'), (20, 'B'), (30, 'C')]

3.迭代Dict:

可看到在Dict那里我们进行了遍历,是通过key获取到value的,现在我们直接获取value:

d = {

'jimo': 95,

'love': 85,

'dog': 59

}

for v in d.values():#values() 方法实际上把一个 dict 转换成了包含 value 的list

print v

for v in d.itervalues():# itervalues() 方法不会转换,它会在迭代过程中依次从 dict 中取出 value,所以 itervalues() 方法比 values() 方法节省了生成 list 所需的内存

print v

 

21

 

4.迭代dict的key和value:

for key,value in d.items():#当然也有iteritems方法

print key,':',value

print d.items()

 

22

 

12.列表生成表达式

1.生成列表:

print range(1,11)

print range(1,11,2)

print range(1,11,3)

print [x*x for x in range(1,11)]

#相当于:

L = []

for x in range(1,11):

L.append(x*x)

print L

 

23

 

2.生成HTML表格:

d = {

'jimo': 95,

'love': 85,

'dog': 59

}

#字符串可以通过 % 进行格式化,用指定的参数替代 %s

tds = ['%s%s' % (name, score) for name, score in d.iteritems()]

print ''

print ''

print '\n'.join(tds)#字符串的join()方法可以把一个 list 拼接成一个字符串

print '

NameScore

'

 

24

 

复制到浏览器效果:

25

 

3.条件过滤:

print [x*x for x in range(1,11) if x%2==0]

L = ['jimo','love',123,456,'lonely']

print [x.upper() for x in L if isinstance(x,str)]

# isinstance(x, str) 可以判断变量 x 是否是字符串

 

26

 

4.for循环嵌套:

print [x+y for x in 'abc' for y in '123']

 

27
相关TAG标签
上一篇:Unity 对Camera 属性Clear Flags 的SkyBox/Solid Color/Depth Only深度解析
下一篇:一起talk C栗子吧(第一百四十一回:C语言实例--文件操作:基于文件指针一)
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站