1)变量不需要删除,可以直接回收使用
>>>a = 10
>>>print a.type(a)
10,
>>>a = 1.3
>>>print a.type(a)
10,
2)序列:一组有顺序的元素的集合
tuple:元祖,元素一旦确定,就不可更改
list:列表,元素与可以任意修改 s[1]=3,对list进行赋值,但是tuple不许这样做
str:字符串是一种元祖
2.1)索引:[上限:下限:步长] 不包含上限
>>>print s[:5] 从开始到下标4,不包括5
>>>print s[2:] 从2开始到最后
>>>print s[0:5:2] 从0开始到下标4,不包括5,取出0,2,4
>>>print s[2,0,-1] 从下标2到1,不包括0
>>>print s[-1] 最后一个元素
>>>print s[-3] 最后第三个元素
2.2)字典
1)键值对:键-->不可变对象;值-->任何对象
2)字典是无序的,通过键来取值;list/tuple是有序的,通过下标来取值
3)常见用法:
dic = {'tom':11, 'sam':57,'lily':100} 创建字典
dict = {} 创建空字典
dic['lilei'] = 99 在字典新增元素
dic.clear() 清空字典元素
del dic['tom'] 删除 dic 的‘tom’元素
遍历字典
dic.keys()、dic.values()、dic.items() 获取所有键、所有值、所有元素(键值对)
for key,value in dic.items:
print key,value
3)序列的方法:
3.1)str、tuple、list方法:
len(s) 返回: 序列中包含元素的个数
min(s) 返回: 序列中最小的元素
max(s) 返回: 序列中最大的元素
all(s) 返回: True, 如果所有元素都为True的话
any(s) 返回: True, 如果任一元素为True的话
3.2)tuple、list方法:
sum(s) 返回:序列中所有元素的和
s.count(x) 返回: x在s中出现的次数
s.index(x) 返回: x在s中第一次出现的下标
3.3)list方法
l.extend(l2) 在表l的末尾添加表l2的所有元素
l.append(x) 在l的末尾附加x元素
l.sort() 对l中的元素排序
l.reverse() 将l中的元素逆序
l.pop() 返回:表l的最后一个元素,并在表l中删除该元素
del l[i] 删除该元素
sorted([1,5,3]) # 返回正序的序列,也就是[1,3,5]
reversed([1,5,3]) # 返回反序的序列,也就是[3,5,1]
3.4)str方法:
str.isalnum() 返回:True, 如果所有的字符都是字母或数字
str.isalpha() 返回:True,如果所有的字符都是字母
str.isdigit() 返回:True,如果所有的字符都是数字
str.istitle() 返回:True,如果所有的词的首字母都是大写
str.isspace() 返回:True,如果所有的字符都是空格
str.islower() 返回:True,如果所有的字符都是小写字母
str.isupper() 返回:True,如果所有的字符都是大写字母
str.split(',') 以,为分隔符str,结果保存到一个list里面(默认分隔符为空格)
str.rsplit(',') 从右边开始,分割(默认分隔符为空格)
'+'.join(str) 将字符串以+连接起来
str.strip([sub]) 返回:去掉字符串开头和结尾的空格。也可以提供参数sub,去掉位于字符
串开头和结尾的sub
str.replace(sub, new_sub) 返回:用一个新的字符串new_sub替换str中的sub
4)循环:for循环,while循环
4.1)循环的跳出
continue:跳过某一次循环
for i in range(10): if i == 2:
continue
print i
>>>当i==2的时候,不执行,因此输出0,1,3,4,5,6,7,8,9
break:跳出整个循环
for i in range(10): if i == 2:
break
print i
>>>当i==2的时候,跳出整个循环,因此输出0,1
4.2)循环获取元素的下标
for (index,char) in enumerate(S): enumerate()在每次循环中,返回的是一个包含两个
元素的定值表(tuple),两个元素分别赋予index和char
5)文本文件的输入与输出
1)文件打开方式
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式
w 打开一个文件只用于写入。如果该文件已存在则将其覆盖,如果该文件不存在,创建新文件
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾;如果该文件不
存在,创建新文件
r+ 打开一个文件用于读写
w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。
文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
2)一般读取文件,用于for循环
read():一次性读取,存到一个str里面
readlines():一次性读取,存到一个list里面
6)函数
方便我们重复的使用某一段功能;
return用于返回值,函数中遇到return的话,会结束执行函数体;要是没有return的话,python会抛出None,表示没有值
6.1)函数的参数传递:
python的函数参数传值,传的是变量指向的内存地址的值;
分类:不可变对象传参、可变对象传参
传参类型:
位置传参;包裹传递(*args/**args);关键字传参
传参的规则:先位置,再关键字,再包裹位置,再包裹关键字
6.2)python的变量和对象
变量是没有类型的,可以指向任何对象的;
对象:分为不可变对象(int/tuple/string等)和可变对象(list/dict等)
a = 1
def change_integer(a):
a = a + 1
return a
print change_integer(a)
print a
>>>输出2 1 不可变对象传参:基本数据类型的变量,变量传递给函数后,函数会在内存中复制
一个新的变量,从而不影响原来的变量
b = [1,2,3]
def change_list(b):
b[0] = b[0] + 1
return b
print change_list(b)
print b
>>>输出 [2,2,3] [2,2,3] 可变对象传参;表来说,表传递给函数的是一个指针,指针指向
序列在内存中的位置,在函数中对表的操作将在原有内存中进行,从而影响原有变量
6.3)常见函数
lambda函数
func = lambda x,y: x + y
print func(3,4)
高阶函数:函数作为参数传递
def test(f, a, b): print 'test'
print f(a, b)
test((lambda x,y: x**2 + y), 3, 5)
map函数:依次将函数对象作用于表中元素,第一个参数为函数
re = map((lambda x: x+3),[1,3,5,6])
re = map((lambda x,y: x+y),[1,2,3],[6,7,9])
filter函数:过滤;如果函数对象返回的是True,则该次的元素被储存于返回的表中
def func(a):
if a > 100:
return True
else:
return False
print filter(func,[10,56,101,500])
reduce:依次叠加进行操作;第一个函数必须要有2个参数
print reduce((lambda x,y: x+y),[1,2,5,7,9])
7)迭代器、生成器、表生成式
7.1)迭代器
迭代器实际上和for循环差不多,唯一的区别是迭代器需要遍历"可迭代对象(基本上所有序列都是
可迭代对象,除了这些容器,还有打开文件、socket等都是可迭代对象)";迭代器不会一开始就把
所有值取出来放到内存,而是用到时才一个个取
a = iter([1,2,3]) a就是一个迭代器;for循环默认会执行这一步
7.2)生成器:主要目的是构成一个用户自定义的循环对象
def gen():
for i in range(4):
yield i
if __name__ == "__main__":
for i in gen()
print i 此处的gen()为生成器函数,采用for循环取出4次;实际内部执行的是next(),
for循环默认会执行next()
G = (x for x in range(4)) 生成器表达式:中括号
7.3)表推倒公式
xl = [1,3,5]
yl = [9,12,13]
L = [ x**2 for (x,y) in zip(xl,yl) if y > 10] 方括号;zip函数接收任意多个
参数,然后返回一个tuple
>>>输出[9,25]
8)类
8.1)类的组成
属性:就是变量,表示类具有的属性:看起来怎么
方法:类具有的一些动作,通过函数实现:能干什么
类:一类事物的集合
8.2)继承
子类将继承父类所有的属性和方法