Python学习记录
Python学习记录
用
,表示一个空格当你输入
name = raw_input()并按下回车后,Python交互式命令行就在等待你的输入了。这时,你可以输入任意字符,然后按回车后完成输入。再次输入name则可以直接显示刚才输入的内容以#开头的语句是注释,注释是给人看的,可以是任意内容,解释器会忽略掉注释。其他每一行都是一个语句,当语句以冒号“:”结尾时,缩进的语句视为代码块
数据类型:int, float, string
如果字符串内部既包含’又包含”怎么办?可以用转义字符\来标识
转义字符\可以转义很多字符,比如
\n表示换行,\t表示制表符,字符\本身也要转义,所以\\表示的字符就是\如果字符串里面有很多字符都需要转义,就需要加很多
\,为了简化,Python还允许用r''表示''内部的字符串默认不转义如果字符串内部有很多换行,用
\n写在一行里不好阅读,为了简化,Python允许用'''...'''的格式表示多行内容字符串
1
2
3
4ord('A')
65
chr(65)
'A'len()函数可以返回字符串的长度由于Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码。当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行:
1
2#!/usr/bin/env python
# -*- coding: utf-8 -*-%运算符就是用来格式化字符串的。在字符串内部,
%s表示用字符串替换,%d表示用整数替换,有几个%?占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个%?,括号可以省略。
常见的占位符有:
%d 整数
%f 浮点数
%s 字符串
%x 十六进制整数1
2
3
4'Hello, %s' % 'world'
'Hello, world'
'Hi, %s, you have $%d.' % ('Michael', 1000000)
'Hi, Michael, you have $1000000.'列出班里所有同学的名字,就可以用一个list表示:
1
2
3
4
5
6
7
8
9
10
11
12
13classmates = ['Michael', 'Bob', 'Tracy']
classmates
['Michael', 'Bob', 'Tracy']
#显示某一个
classmates[1]
'Bob'
#显示最后一个
classmates[-1]
'Tracy'
#添加
classmates.append('Adam')
#插入
classmates.insert(1, 'Jack')要删除指定位置的元素,用
pop(i)方法,其中i是索引位置一种有序列表叫元组:
tuple。tuple和list非常类似,但是tuple一旦初始化就不能修改Python的缩进规则,如果
if语句判断是True,就把缩进的两行print语句执行了,否则,什么也不做。1
2
3
4
5
6
7age = 3
if age >= 18:
print 'adult'
elif age >= 6:
print 'teenager'
else:
print 'kid'elif是else if的缩写if语句执行有个特点,它是从上往下判断,如果在某个判断上是True,把该判断对应的语句执行后,就忽略掉剩下的elif和else.求和
for求和1
2
3
4sum = 0
for x in range(101):
sum = sum + x
print sumwhile求和1
2
3
4
5
6sum = 0
n = 99
while n > 0:
sum = sum + n
n = n - 2
print sum从
raw_input()读取的内容永远以字符串的形式返回Python内置了字典:
dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。1
2
3d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
d['Michael']
95要删除一个key,用
pop(key)方法,对应的value也会从dict中删除:1
2
3
4d.pop('Bob')
75
d
{'Michael': 95, 'Tracy': 85}set和dict类似,也是一组key的集合,但不存储value。要创建一个set,需要提供一个list作为输入集合:1
2
3s = set([1, 2, 3])
s
set([1, 2, 3])传入的参数
[1, 2, 3]是一个list,而显示的set([1, 2, 3])只是告诉你这个set内部有1,2,3这3个元素,显示的[]不表示这是一个list。
通过add(key)方法可以添加元素到set中,通过remove(key)方法可以添加元素到set中。
set和dict的唯一区别仅在于没有存储对应的value,但是,set的原理和dict一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素”。Python的函数
比较函数
cmp(x, y)就需要两个参数,如果x<y,返回-1,如果x==y,返回0,如果x>y,返回1Python内置的常用函数还包括数据类型转换函数,比如
int()函数可以把其他数据类型转换为整数:1
2
3
4
5
6
7
8
9
10
11
12
13
14int('123')
123
int(12.34)
12
float('12.34')
12.34
str(1.23)
'1.23'
unicode(100)
u'100'
bool(1)
True
bool('')
False在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。
1
2
3
4
5def my_abs(x):
if x >= 0:
return x
else:
return -x如果想定义一个什么事也不做的空函数,可以用pass语句
1
2def nop():
pass对参数类型做检查,只允许整数和浮点数类型的参数。数据类型检查可以用内置函数
isinstance实现:1
2
3
4
5
6
7def my_abs(x):
if not isinstance(x, (int, float)):
raise TypeError('bad operand type')
if x >= 0:
return x
else:
return -x定义可变参数和定义list或tuple参数相比,仅仅在参数前面加了一个*号。在函数内部,参数numbers接收到的是一个tuple,因此,函数代码完全不变。但是,调用该函数时,可以传入任意个参数,包括0个参数
1
2
3
4
5def calc(*numbers):
sum = 0
for n in numbers:
sum = sum + n * n
return sum在Python中定义函数,可以用必选参数、默认参数、可变参数和关键字参数,这4种参数都可以一起使用,或者只用其中某些,但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数和关键字参数。
1
2def func(a, b, c=0, *args, **kw):
print 'a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw
在函数调用的时候,Python解释器自动按照参数位置和参数名把对应的参数传进去。
1 | func(1, 2) |
最神奇的是通过一个tuple和dict,你也可以调用该函数
1 | args = (1, 2, 3, 4) |
>>> L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']
取前三个1
2
3
4
5
6
7r = []
n = 3
for i in range(n):
r.append(L[i])
r
['Michael', 'Sarah', 'Tracy']默认情况下,dict迭代的是key。如果要迭代value,可以用
for value in d.itervalues(),如果要同时迭代key和value,可以用for k, v in d.iteritems()。
如何判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断:1
2
3
4
5
6
7from collections import Iterable
isinstance('abc', Iterable) # str是否可迭代
True
isinstance([1,2,3], Iterable) # list是否可迭代
True
isinstance(123, Iterable) # 整数是否可迭代
False列表生成式
1
2[x * x for x in range(1, 11)]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]map()函数接收两个参数,一个是函数,一个是序列,·map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回1
2
3
4
5def f(x):
return x * x
...
map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
[1, 4, 9, 16, 25, 36, 49, 64, 81]