赞
踩
https://github.com/javanan/python-small-examples
告别枯燥,60秒学会一个小例子,系统学习Python,从入门到大师。Python之路已有190个例子:
第零章:感受Python之美
第一章:Python基础
第二章:Python之坑
第三章:Python字符串和正则
第四章:Python文件
第五章:Python日期
第六章:Python利器
第七章:Python画图
第八章:Python实战
第九章:Python基础算法
第十章:Python机器学习
后续章节:
- 不断丰富原有1~7章节;
- Python基础算法;
- python 机器学习,包括机器学习的基础概念和十大核心算法以及Sklearn和Kaggle实战的小例子。
- PyQt制作GUI
- Flask前端开发
- Python数据分析:NumPy, Pandas, Matplotlib, Plotly等
已发《Python之路.1.1.pdf》最新版本包括7个章节:Python基础
,Python字符串和正则
,Python文件
,Python日期
, Python利器
,Python画图
章节,共计147个
小例子。
通过一行代码,体会Python语言简洁之美
a
,b
:a, b = b, a
[1,2,3][::-1] # [3,2,1]
{
**{
'a':1,'b':2}, **{
'c':3}} # {'a': 1, 'b': 2, 'c': 3}
set([1,2,2,3,3,3]) # {1, 2, 3}
max(max([ [1,2,3], [5,1], [4] ], key=lambda v: max(v))) # 5
list(range(10,-1,-1)) # [10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
Python绘图方便、漂亮,画图神器pyecharts几行代码就能绘制出热力图:
炫酷的水球图:
经常使用的词云图:
仅适用Python的常用绘图库:Matplotlib,就能制作出动画,辅助算法新手入门基本的排序算法。如下为一个随机序列,使用快速排序算法
,由小到大排序的过程动画展示:
归并排序动画展示:
使用turtule绘制的漫天雪花:
Python非常适合做数值计算、数据分析,一行代码完成数据透视:
pd.pivot_table(df, index=['Manager', 'Rep'], values=['Price'], aggfunc=np.sum)
Python机器学习库Sklearn
功能强大,接口易用,包括数据预处理模块、回归、分类、聚类、降维等。一行代码创建一个KMeans聚类模型:
from sklearn.cluster import KMeans
KMeans( n_clusters=3 )
PyQt设计器开发GUI,能够迅速通过拖动组建搭建出来,使用方便。如下为使用PyQt,定制的一个专属自己的小而美的计算器。
除此之外,使用Python的Flask框架搭建Web框架,也非常方便。
总之,在这个Python小例子
,你都能学到关于使用Python干活的方方面面的有趣的小例子,欢迎关注。
Python基础
主要总结Python常用内置函数;Python独有的语法特性、关键词nonlocal
, global
等;内置数据结构包括:列表(list), 字典(dict), 集合(set), 元组(tuple) 以及相关的高级模块collections
中的Counter
, namedtuple
, defaultdict
,heapq
模块。目前共有82
个小例子
此章节一共包括82个
基础小例子。
绝对值或复数的模
In [1]: abs(-6)
Out[1]: 6
接受一个迭代器,如果迭代器的所有元素
都为真,那么返回True
,否则返回False
In [2]: all([1,0,3,6])
Out[2]: False
In [3]: all([1,2,3])
Out[3]: True
接受一个迭代器,如果迭代器里至少有一个
元素为真,那么返回True
,否则返回False
In [4]: any([0,0,0,[]])
Out[4]: False
In [5]: any([0,0,1])
Out[5]: True
调用对象的__repr__() 方法,获得该方法的返回值,如下例子返回值为字符串
In [1]: class Student(): ...: def __init__(self,id,name): ...: self.id = id ...: self.name = name ...: def __repr__(self): ...: return 'id = '+self.id +', name = '+self.name ...: ...: In [2]: xiaoming = Student(id='001',name='xiaoming') In [3]: print(xiaoming) id = 001, name = xiaoming In [4]: ascii(xiaoming) Out[4]: 'id = 001, name = xiaoming'
将十进制
转换为二进制
In [1]: bin(10)
Out[1]: '0b1010'
将十进制
转换为八进制
In [1]: oct(9)
Out[1]: '0o11'
将十进制
转换为十六进制
In [1]: hex(15)
Out[1]: '0xf'
测试一个对象是True, 还是False.
In [1]: bool([0,0,0])
Out[1]: True
In [2]: bool([])
Out[2]: False
In [3]: bool([1,0,1])
Out[3]: True
将一个字符串
转换成字节
类型
In [1]: s = "apple"
In [2]: bytes(s,encoding='utf-8')
Out[2]: b'apple'
将字符类型
、数值类型
等转换为字符串
类型
In [1]: i = 100
In [2]: str(i)
Out[2]: '100'
判断对象是否可被调用,能被调用的对象就是一个callable
对象,比如函数 str
, int
等都是可被调用的,但是例子4 中xiaoming
实例是不可被调用的:
In [1]: callable(str)
Out[1]: True
In [2]: callable(int)
Out[2]: True
In [3]: xiaoming
Out[3]: id = 001, name = xiaoming
In [4]: callable(xiaoming)
Out[4]: False
如果想让xiaoming
能被调用 xiaoming(), 需要重写Student
类的__call__
方法:
In [1]: class Student(): ...: def __init__(self,id,name): ...: self.id = id ...: self.name = name ...: def __repr__(self): ...: return 'id = '+self.id +', name = '+self.name ...: def __call__(self): ...: print('I can be called') ...: print(f'my name is {self.name}') ...: ...: In [2]: t = Student('001','xiaoming') In [3]: t() I can be called my name is xiaoming
查看十进制整数对应的ASCII字符
In [1]: chr(65)
Out[1]: 'A'
查看某个ASCII字符
对应的十进制数
In [1]: ord('A')
Out[1]: 65
classmethod
装饰器对应的函数不需要实例化,不需要 self
参数,但第一个参数需要是表示自身类的 cls 参数,可以来调用类的属性,类的方法,实例化对象等。
In [1]: class Student():
...: def __init__(self,id,name):
...: self.id = id
...: self.name = name
...: def __repr__(self):
...: return 'id = '+self.id +', name = '+self.name
...: @classmethod
...: def f(cls):
...: print(cls)
将字符串编译成python能识别或可执行的代码,也可以将文字读成字符串再编译。
In [1]: s = "print('helloworld')"
In [2]: r = compile(s,"<string>", "exec")
In [3]: r
Out[3]: <code object <module> at 0x0000000005DE75D0, file "<string>", line 1>
In [4]: exec(r)
helloworld
创建一个复数
In [1]: complex(1,2)
Out[1]: (1+2j)
删除对象的属性
In [1]: delattr(xiaoming,'id')
In [2]: hasattr(xiaoming,'id')
Out[2]: False
创建数据字典
In [1]: dict()
Out[1]: {
}
In [2]: dict(a='a',b='b')
Out[2]: {
'a': 'a', 'b': 'b'}
In [3]: dict(zip(['a','b'],[1,2]))
Out[3]: {
'a': 1, 'b': 2}
In [4]: dict([('a',1),('b',2)])
Out[4]: {
'a': 1, 'b': 2}
不带参数时返回当前范围
内的变量、方法和定义的类型列表;带参数时返回参数
的属性,方法列表。
In [96]: dir(xiaoming) Out[96]: ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'name']
分别取商和余数
In [1]: divmod(10,3)
Out[1]: (3, 1)
返回一个可以枚举的对象,该对象的next()方法将返回一个元组。
In [1]: s = ["a","b","c"]
...: for i ,v in enumerate(s,1):
...: print(i,v)
...:
1 a
2 b
3 c
将字符串str 当成有效的表达式来求值并返回计算结果取出字符串中内容
In [1]: s = "1 + 3 +5"
...: eval(s)
...:
Out[1]: 9
In [1]: import sys
In [2]: a = {
'a':1,'b':2.0}
In [3]: sys.getsizeof(a) # 占用240个字节
Out[3]: 240
在函数中设定过滤条件,迭代元素,保留返回值为True
的元素:
In [1]: fil = filter(lambda x: x>10,[1,11,2,45,7,6,13])
In [2]: list(fil)
Out[2]: [11, 45, 13]
将一个整数或数值型字符串转换为浮点数
In [1]: float(3)
Out[1]: 3.0
如果不能转化为浮点数,则会报ValueError
:
In [2]: float('a')
ValueError Traceback (most recent call last)
<ipython-input-11-99859da4e72c> in <module>()
----> 1 float('a')
ValueError: could not convert string to float: 'a'
格式化输出字符串,format(value, format_spec)实质上是调用了value的__format__(format_spec)方法。
In [104]: print("i am {0},age{1}".format("tom",18))
i am tom,age18
3.1415926 | {:.2f} | 3.14 | 保留小数点后两位 |
---|---|---|---|
3.1415926 | {:+.2f} | +3.14 | 带符号保留小数点后两位 |
-1 | {:+.2f} | -1.00 | 带符号保留小数点后两位 |
2.71828 | {:.0f} | 3 | 不带小数 |
5 | {:0>2d} | 05 | 数字补零 (填充左边, 宽度为2) |
5 | {:x<4d} | 5xxx | 数字补x (填充右边, 宽度为4) |
10 | {:x<4d} | 10xx | 数字补x (填充右边, 宽度为4) |
1000000 | {:,} | 1,000,000 | 以逗号分隔的数字格式 |
0.25 | {:.2%} | 25.00% | 百分比格式 |
1000000000 | {:.2e} | 1.00e+09 | 指数记法 |
18 | {:>10d} | ’ 18’ | 右对齐 (默认, 宽度为10) |
18 | {:<10d} | '18 ’ | 左对齐 (宽度为10) |
18 | {:^10d} | ’ 18 ’ | 中间对齐 (宽度为10) |
创建一个不可修改的集合。
In [1]: frozenset([1,1,3,2,3])
Out[1]: frozenset({
1, 2, 3})
因为不可修改,所以没有像set
那样的add
和pop
方法
获取对象的属性
In [1]: class Student():
...: def __init__(self,id,name):
...: self.id = id
...: self.name = name
...: def __repr__(self):
...: return 'id = '+self.id +', name = '+self.name
In [2]: xiaoming = Student(id='001',name='xiaoming')
In [3]: getattr(xiaoming,'name') # 获取xiaoming这个实例的name属性值
Out[3]: 'xiaoming'
In [1]: class Student():
...: def __init__(self,id,name):
...: self.id = id
...: self.name = name
...: def __repr__(self):
...: return 'id = '+self.id +', name = '+self.name
In [2]: xiaoming = Student(id='001',name='xiaoming')
In [3]: hasattr(xiaoming,'name')
Out[3]: True
In [4]: hasattr(xiaoming,'address')
Out[4]: False
返回对象的哈希值,值得注意的是自定义的实例都是可哈希的,list
, dict
, set
等可变对象都是不可哈希的(unhashable)
In [1]: hash(xiaoming)
Out[1]: 6139638
In [2]: hash([1,2,3])
TypeError Traceback (most recent call last)
<ipython-input-32-fb5b1b1d9906> in <module>()
----> 1 hash([1,2,3])
TypeError: unhashable type: 'list'
返回对象的帮助文档
In [1]: help(xiaoming) Help on Student in module __main__ object: class Student(builtins.object) | Methods defined here: | | __init__(self, id, name) | | __repr__(self) | | Data descriptors defined here: | | __dict__ | dictionary for instance variables (if defined) | | __weakref__ | list of weak references to the object (if defined)
返回对象的内存地址
In [1]: id(xiaoming)
Out[1]: 98234208
获取用户输入内容
In [1]: input()
aa
Out[1]: 'aa'
int(x, base =10) , x可能为字符串或数值,将x 转换为一个普通整数。如果参数是字符串,那么它可能包含符号和小数点。如果超出了普通整数的表示范围,一个长整数被返回。
In [1]: int('12',16)
Out[1]: 18
判断object是否为类classinfo的实例,是返回true
In [1]: class Student():
...: def __init__(self,id,name):
...: self.id = id
...: self.name = name
...: def __repr__(self):
...: return 'id = '+self.id +', name = '+self.name
In [2]: xiaoming = Student(id='001',name='xiaoming')
In [3]: isinstance(xiaoming,Student)
Out[3]: True
In [1]: class undergraduate(Student):
...: def studyClass(self):
...: pass
...: def attendActivity(self):
...: pass
In [2]: issubclass(undergraduate,Student)
Out[2]: True
In [3]: issubclass(object,Student)
Out[3]: False
In [4]: issubclass(Student,object)
Out[4]: True
如果class是classinfo元组中某个元素的子类,也会返回True
In [1]: issubclass(int,(int,float))
Out[1]: True
使用iter(obj, sentinel)
, 返回一个可迭代对象, sentinel可省略(一旦迭代到此元素,立即终止)
In [1]: lst = [1,3,5]
In [2]: for i in iter(lst):
...: print(i)
...:
1
3
5
In [1]: class TestIter(object): ...: def __init__(self): ...: self.l=[1,3,2,3,4,5] ...: self.i=iter(self.l) ...: def __call__(self): #定义了__call__方法的类的实例是可调用的 ...: item = next(self.i) ...: print ("__call__ is called,fowhich would return",item) ...: return item ...: def __iter__(self): #支持迭代协议(即定义有__iter__()函数) ...: print ("__iter__ is called!!") ...: return iter(self.l) In [2]: t = TestIter() In [3]: t() # 因为实现了__call__,所以t实例能被调用 __call__ is called,which would return 1 Out[3]: 1 In [4]: for e in TestIter(): # 因为实现了__iter__方法,所以t能被迭代 ...: print(e) ...: __iter__ is called!! 1 3 2 3 4 5
object 是所有类的基类
In [1]: o = object()
In [2]: type(o)
Out[2]: object
返回文件对象
In [1]: fo = open('D:/a.txt',mode='r', encoding='utf-8')
In [2]: fo.read()
Out[2]: '\ufefflife is not so long,\nI use Python to play.'
mode取值表:
字符 | 意义 |
---|---|
'r' |
读取(默认) |
'w' |
写入,并先截断文件 |
'x' |
排它性创建,如果文件已存在则失败 |
'a' |
写入,如果文件存在则在末尾追加 |
'b' |
二进制模式 |
't' |
文本模式(默认) |
'+' |
打开用于更新(读取与写入) |
base为底的exp次幂,如果mod给出,取余
In [1]: pow(3, 2, 4)
Out[1]: 1
In [5]: lst = [1,3,5]
In [6]: print(lst)
[1, 3, 5]
In [7]: print(f'lst: {lst}')
lst: [1, 3, 5]
In [8]: print('lst:{}'.format(lst))
lst:[1, 3, 5]
In [9]: print('lst:',lst)
lst: [1, 3, 5]
返回 property 属性,典型的用法:
class C:
def __init__(self):
self._x = None
def getx(self):
return self._x
def setx(self, value):
self._x = value
def delx(self):
del self._x
# 使用property类创建 property 属性
x = property(getx, setx, delx, "I'm the 'x' property.")
使用python装饰器,实现与上完全一样的效果代码:
class C:
def __init__(self):
self._x = None
@property
def x(self):
return self._x
@x.setter
def x(self, value):
self._x = value
@x.deleter
def x(self):
del self._x
生成一个不可变序列:
In [1]: range(11)
Out[1]: range(0, 11)
In [2]: range(0,11,1)
Out[2]: range(0, 11)
In [1]: rev = reversed([1,4,2,3,1])
In [2]: for i in rev:
...: print(i)
...:
1
3
2
4
1
四舍五入,ndigits
代表小数点后保留几位:
In [11]: round(10.0222222, 3)
Out[11]: 10.022
In [12]: round(10.05,1)
Out[12]: 10.1
返回一个set对象,集合内不允许有重复元素:
In [159]: a = [1,4,2,3,1]
In [160]: set(a)
Out[160]: {
1, 2, 3, 4}
class slice(start, stop[, step])
返回一个表示由 range(start, stop, step) 所指定索引集的 slice对象,它让代码可读性、可维护性变好。
In [1]: a = [1,4,2,3,1]
In [2]: my_slice_meaning = slice(0,5,2)
In [3]: a[my_slice_meaning]
Out[3]: [1, 2, 1]
排序:
In [1]: a =
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。