python3 -m pip install [...] 在python3中使用-m打开某一模块
一、迭代器
for 循环实现迭代器
对于字典的迭代
迭代键值对
for x,y in dict1.items():
... print(x,y)
迭代key值
for x in dict1:
... print(x)
迭代value值
for y in dict1.values():
... print(y)
...
二、列表生成式
要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1, 11))
直接生成一个列表
[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']
因此,列表生成式也可以使用两个变量来生成list:
>>> d = {'x': 'A', 'y': 'B', 'z': 'C' }
>>> [k + '=' + v for k, v in d.items()]
['y=B', 'x=A', 'z=C']
最后把一个list中所有的字符串变成小写:
>>> L = ['Hello', 'World', 'IBM', 'Apple']
>>> [s.lower() for s in L]
['hello', 'world', 'ibm', 'apple']
三、生成器(generator)优点是动态生成,节约内存
一边循环一边计算的机制,跟列表生成式差不多,只需要将[]改成(),则变为了生成器,元>素需要一个一个迭代输出,比如通过next(生成器的名称)挨个输出,用for简便输出
如果在一个函数值中有了关键子yield,则此函数不再是普通函数,而是一个generator,注意
yield的用法
四、函数式编程
1、高阶函数
使用map和Iterable
将函数作用于list的每一个元素,然后将结果返回一个迭代器Iterable,最后把迭代返回的>惰性序列重新生成一个新的list对象
def f(x):
... return x*x
...
>>> li=[1,2,3,4,5,6,7,8,9]
>>> r=map(f,li)
>>> list(r)
[1, 4, 9, 16转换成8进制
七、类和实例转换成8进制
七、类和实例, 25, 36, 49, 64, 81]
reduce的用法:reduce把函数作用在序列上,然后把结果何须列的下一个元素做累加计算
比如,求加法运算
from functools import reduce
>>> def fn(x,y):
... return x*10 +y
...
>>> reduce(fn,[1,3,5,7,9])
13579
filter()用于过滤序列
filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还>是丢弃该元素。
def is_odd(n):
return n % 2 == 1
list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]))
# 结果: [1, 5, 9, 15]
sorted()实现排序,括号内一个参数是list或是别的,另一个参数控制排序,比如reverse=Ture,从大到小排序,reverse=False,从小到大排序
五、装饰器(decorator)代码运行期间动态增加函数功能
注意@log 打印日志的功能
六、偏函数
转换成n进制的数值 int('123445',base=8)转换成8进制
七、类和实例
一、迭代器
for 循环实现迭代器
对于字典的迭代
迭代键值对
for x,y in dict1.items():
... print(x,y)
迭代key值
for x in dict1:
... print(x)
迭代value值
for y in dict1.values():
... print(y)
...
二、列表生成式
要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1, 11))
直接生成一个列表
[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']
因此,列表生成式也可以使用两个变量来生成list:
>>> d = {'x': 'A', 'y': 'B', 'z': 'C' }
>>> [k + '=' + v for k, v in d.items()]
['y=B', 'x=A', 'z=C']
最后把一个list中所有的字符串变成小写:
>>> L = ['Hello', 'World', 'IBM', 'Apple']
>>> [s.lower() for s in L]
['hello', 'world', 'ibm', 'apple']
三、生成器(generator)优点是动态生成,节约内存
一边循环一边计算的机制,跟列表生成式差不多,只需要将[]改成(),则变为了生成器,元>素需要一个一个迭代输出,比如通过next(生成器的名称)挨个输出,用for简便输出
如果在一个函数值中有了关键子yield,则此函数不再是普通函数,而是一个generator,注意
yield的用法
四、函数式编程
1、高阶函数
使用map和Iterable
将函数作用于list的每一个元素,然后将结果返回一个迭代器Iterable,最后把迭代返回的>惰性序列重新生成一个新的list对象
def f(x):
... return x*x
...
>>> li=[1,2,3,4,5,6,7,8,9]
>>> r=map(f,li)
>>> list(r)
[1, 4, 9, 16转换成8进制
七、类和实例转换成8进制
七、类和实例, 25, 36, 49, 64, 81]
reduce的用法:reduce把函数作用在序列上,然后把结果何须列的下一个元素做累加计算
比如,求加法运算
from functools import reduce
>>> def fn(x,y):
... return x*10 +y
...
>>> reduce(fn,[1,3,5,7,9])
13579
filter()用于过滤序列
filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还>是丢弃该元素。
def is_odd(n):
return n % 2 == 1
list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]))
# 结果: [1, 5, 9, 15]
sorted()实现排序,括号内一个参数是list或是别的,另一个参数控制排序,比如reverse=Ture,从大到小排序,reverse=False,从小到大排序
五、装饰器(decorator)代码运行期间动态增加函数功能
注意@log 打印日志的功能
六、偏函数
转换成n进制的数值 int('123445',base=8)转换成8进制
七、类和实例
实例的变量名如果以__开头,就变成了一个私有变量(private),只有内部可以访问,外部不能访问,
self.__name='dsd'
__slots__ 使用
为了达到限制的目的,Python允许在定义class的时候,定义一个特殊的__slots__变量,来限制该class实例能添加的属性:
class Student(object):
__slots__ = ('name', 'age') # 用tuple定义允许绑定的属性名称
>>> s = Student() # 创建新的实例
>>> s.name = 'Michael' # 绑定属性'name'
>>> s.age = 25 # 绑定属性'age'
>>> s.score = 99 # 绑定属性'score'