廖雪峰python3.5教程学习笔记

廖雪峰python3.5教程学习笔记(未完)

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

input()输入,括号中写提示
input()返回的数据类型是str,str不能直接和整数比较,必须先把str转换成整数
\具有转义字符的作用
//表示整除
ASCII编码范围较小没办法表示中文   Unicode编码较全 UTF-8是简化了Unicode编码,可以满足常用
len()函数计算的是str的字符数
由于Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码。当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
格式化:用%来隔开
%d 整数
%f 浮点数
%s 字符串
%x 十六进制整数
list是一种有序的集合,可以随时添加和删除其中的元素。;列表a.append('Adam')
a.insert(1, 'Jack')在列表a的1位置插入‘Jack’,a.pop()删除最后一个元素,a.pop(1)删除1号元素(从0开始计数)
list里面的元素的数据类型也可以不同
list元素也可以是另一个list
元组一旦初始化就不能修改,但是如果元组的元素是一个列表,这个list中元素是可以修改的
for x in ...循环就是把每个元素代入变量x,然后执行缩进块的语句
list(range(5))    [0, 1, 2, 3, 4]
字典d.get('Thomas', -1),检查有没有‘Thomas’这个key是否存在,如果不存在则写入‘Thomas’:-1这个字典,如果存在返回
None(实际什么都不显示)
d.pop('Bob')删除字典d中Bob这个key和值,需要牢记的第一条就是dict的key必须是不可变对象,否则会引起混乱,一般别修改value
集合 s = set([1, 1, 2, 2, 3, 3])要创建一个set,需要提供一个list作为输入集合,s.add(4)给集合加元素4,s.remove(4)删除4
字符串是不可不对象,list是可变对象,a.sort()可对a进行排序,a.replace('a', 'A')用‘A’代替‘a’
函数名其实就是指向一个函数对象的引用,完全可以把函数名赋给一个变量,相当于给这个函数起了一个“别名”:
>>> a = abs # 变量a指向abs函数
>>> a(-1) # 所以也可以通过a调用abs函数      1
如果你已经把my_abs()的函数定义保存为abstest.py文件了,那么,可以在该文件的当前目录下启动Python解释器,用from abstest import my_abs来导入my_abs()函数,注意abstest是文件名(不含.py扩展名):
如果想定义一个什么事也不做的空函数,可以用pass语句:


def nop():
    pass
数据类型检查可以用内置函数isinstance()
if not isinstance(x, (int, float)):
        raise TypeError('bad operand type')    如果x不是int或float则回复错误信息
 函数返回多个值return nx, ny,实际上它是把结果放入一个元组中
def person(name, age, **kw):
    print('name:', name, 'age:', age, 'other:', kw)
结果person('Bob', 35, city='Beijing')
    name: Bob age: 35 other: {'city': 'Beijing'}
def person(name, age, *args, city, job):
    print(name, age, args, city, job)
列表生成式 list(range(1, 11))      [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
 [x * x for x in range(1, 11)]       [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
[m + n for m in 'ABC' for n in 'XYZ']        ['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']
d = {'x': 'A', 'y': 'B', 'z': 'C' }
>>> for k, v in d.items():
...     print(k, '=', v)
...
y = B
x = A
z = C




把一个list中所有的字符串变成小写:


>>> L = ['Hello', 'World', 'IBM', 'Apple']
>>> [s.lower() for s in L]
['hello', 'world', 'ibm', 'apple']


使用内建的isinstance函数可以判断一个变量是不是字符串:
>>> x = 'abc'
>>> y = 123
>>> isinstance(x, str)
True


在Python中,这种一边循环一边计算的机制,称为生成器:generator
要创建一个generator,有很多种方法。第一种方法很简单,只要把一个列表生成式的[]改成(),就创建了一个generator:
>>> L = [x * x for x in range(10)]
>>> L
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
>>> g = (x * x for x in range(10))
>>> g
<generator object <genexpr> at 0x1022ef630>
创建L和g的区别仅在于最外层的[]和(),L是一个list,而g是一个generator。
生成器的特点是每用一次计算一个值,而不是一次把所有值全部所出来
next()函数获得generator的下一个返回值:
>>> next(g)
0
>>> next(g)
1
>>> next(g)
4
>>> next(g)
9


如果一个函数定义中包含yield关键字,那么这个函数就不再是一个普通函数,而是一个generator:
函数和generator仅一步之遥。要把fib函数变成generator,只需要把print(b)改为yield b就可以了
generator,在执行过程中,遇到yield就中断,下次又继续执行
对于函数改成的generator来说,遇到return语句或者执行到函数体最后一行语句,就是结束generator的指令,for循环随之结束,只可用一遍
变成generator的函数,在每次调用next()的时候执行,遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行。


可以直接作用于for循环的数据类型有几种:一类是集合数据类型,如list、tuple、dict、set、str等
一类是generator,包括生成器和带yield的generator function。
这些可以直接作用于for循环的对象统称为可迭代对象:Iterable


可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator
生成器都是Iterator对象,但list、dict、str虽然是Iterable,却不是Iterator


Python内建了map()和reduce()函数
def f(x):
    return x * x


>>> r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> list(r)
[1, 4, 9, 16, 25, 36, 49, 64, 81]
map函数有两个参数,第一个参数是函数式,第二个参数是自变量的列表
reduce函数也有两个参数,第一个是有两个自变量的函数表达式,第二个也是自变量列表,与map函数区别是reduce函数是将计算的结果作为一个自变量计算的
>>> from functools import reduce
>>> def fn(x, y):
...     return x * 10 + y
...
>>> reduce(fn, [1, 3, 5, 7, 9])


和map()类似,filter()也接收一个函数和一个序列。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。


例如,在一个list中,删掉偶数,只保留奇数,可以这么写:


def is_odd(n):
    return n % 2 == 1


list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]))


Python内置的sorted()函数就可以对list进行排序:
>>> sorted([36, 5, -12, 9, -21])
[-21, -12, 5, 9, 36]
此外,sorted()函数也是一个高阶函数,它还可以接收一个key函数来实现自定义的排序,例如按绝对值大小排序:


>>> sorted([36, 5, -12, 9, -21], key=abs)
[5, 9, -12, -21, 36]
13579


divmod(num1, num2) 返回一个元组,这个元组包含两个值,第一个是 num1 和 num2 相整除得到的值,第二个是 num1 和 num2 求余得到的值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值