python学习笔记-Day5

字符串格式化

# 字符串格式化之%占位符

# a. 位置
s = ‘i am %s age %d‘ % (‘eason‘, 18)
print(s)

==> i am eason age 18  # 传入可迭代的对象,%占位符会根据迭代传入顺序给字符串赋值

# b. 字典
s = ‘i am %(name)s age %(age)d‘ % {‘name‘:‘eason‘,‘age‘:18}
print(s)

==> i am eason age 18  # 每一个%占位符会起一个名字,传入一个字典,将字典中%占位符名字的key对应的值传入

# c. 浮点型
s = ‘percent %.2f‘ % 99.97623    #  精确到两位小数点,并四舍五入后一位
print(s)

==> percent 99.98

# d.%显示
# 当格式化字符串时,出现了%s等占位符,需要使用%%才可以输出%(类似于转译)
--无占位符时%显示
s = ‘99%‘
print(s)
--有占位符时%显示
s = ‘jack %s 99%%‘ % ‘xx‘  # 如果使用%需要使用%转译
print(s)

==> 99%
jack xx 99%

# e. 左右对齐
s = ‘xxx|%(name)+10s|xxx‘ % {‘name‘:‘eason‘}
print(s)
s = ‘xxx|%(name)-10s|xxx‘ % {‘name‘:‘eason‘}
print(s)

==> xxx|     eason|xxx   # 占位10字符,右对齐(+号)
xxx|eason     |xxx   # 占位10字符,左对齐(-号)

# f. unicode、8进制、16进制
s = ‘unicode:%c   oct:%o,   hex:%x ‘  % (65, 15, 15)
print(s)

==> unicode:A   oct:17,   hex:f   # 分别将值转为unicode,8进制,16进制
# 字符串格式化之format(字符串方法)

# a. format的基本使用
s = ‘num1:{0}  num2:{0}  num{1}‘.format(123,456)  # 位置可以复用
print(s)

==> num1:123  num2:123  num456 # 注意字符串有三个需要格式化地方,而我们只传入两个,传入索引是可以被复用的 

# b. 指定名字修改
s = ‘name:{name:s}  age:{age}‘.format(name=‘eason‘, age=12)
print(s)
# 使用**迭代字典
s = ‘name:{name:s}  age:{age}‘.format(**{‘name‘:‘eason‘, ‘age‘:12})
print(s)

==> name:eason  age:12
name:eason  age:12  # format不仅支持迭代字典方式,而且支持指定名字修改

# c. 会根据传入类型不同自动去转换
s = ‘i am {}, age {}, {}‘.format(‘stenven‘, 18, 2.3)
print(s)

==> i am stenven, age 18, 2.3 # 不需要特定指定字符串类型或者Int或者浮点,传入时自动转换

# d. 传入迭代列表
s = ‘i am {}, age {}, {}‘.format(*[‘stenven‘, 18, 2.3])   # 使用星号遍历字典每一项
print(s)

==> i am stenven, age 18, 2.3  # 迭代列表

# e. 取列表中的元素
s = ‘i am {0[0]}, age {1[0]}, {0[2]}‘.format([‘stenven‘, 18, 2.3], [18,22])   # 使用星号遍历字典每一项
print(s)

==> i am stenven, age 18, 2.3 # 当我们没有使用"*[列表]"时,列表会当成一个元素传入,而在format格式化中,也可以读取列表某个索引的位置

迭代器

# 概念:迭代器是访问集合元素的一种方式。
#          迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。
#          迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退。
#          另外,迭代器的一大优点是不要求事先准备好整个迭代过程中所有的元素。
#         迭代器仅仅在迭代到某个元素时才计算该元素,而在这之前或之后,元素可以不存在或者被销毁。这个特点使得它特别适合用于遍历一些巨大的或是无限的集合,比如几个G的文件

特点:

1. 访问者不需要关心迭代器内部的结构,仅需通过next()方法不断去取下一个内容
2. 不能随机访问集合中的某个值 ,只能从头到尾依次访问
3. 访问到一半时不能往回退
4. 便于循环比较大的数据集合,节省内存

# 用我自己简要理解就是:
# 1. 迭代器是一个对象
# 2. 该对象不使用__next__方法不返回值

生成器

# 生成器基本概念:用普通的函数语法定义的迭代器

# 取出2层嵌套列表生成器
li = [[1,2],[3,4],[5]]
def fla(lis):
  for sublist in lis:
    for element in sublist:
      yield element

# 既然生成器本身就是一个迭代器
f = fla(li)
r1 = f.__next__()
print(r1)
r2 = f.__next__()
print(r2)
r3 = f.__next__()
print(r3)
r4 = f.__next__()
print(r4)
r5 = f.__next__()
print(r5)

==>
1
2
3
4
5

# 进入函数迭代后,遇到了yield,返回了yield返回值,并在此冻结,在下一次被__next__调用的时候,继续从此开始

递归

# 递归,见递归。这是对“递归”最精简的定义
# 其实按照我的理解就是,在函数中调用自己,就是递归

# 例1:斐波那契递归
def fib(n):
    if n <= 2:
        return 1
    else:
        return fib(n-1) + fib(n-2)

r = fib(6)    # 查看第六位斐波那契序列数字
print(r)

# 例2:递归乘法
def f1(n):
    if n == 1:
        return 1
    return f1(n-1)*n

r = f1(5)   # 计算从1到5的阶乘
print(r)

JSON序列化

pickle序列化

time模块与datatime模块

日志模块

时间: 2024-10-13 12:08:46

python学习笔记-Day5的相关文章

python学习笔记day5——常用模块学习

一.主要内容 模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configparser hashlib subprocess logging模块 re正则表达式 二.具体内容 1.模块 a.定义:本质就是.py结尾的python文件,逻辑上组织python代码,实现某种功能.例:文件名test.py-->模块名test. b.导入方法:imort moduname from mdn

Python学习笔记——Day5(转载)

python 编码转换 主要介绍了python的编码机制,unicode, utf-8, utf-16, GBK, GB2312,ISO-8859-1 等编码之间的转换. 常见的编码转换分为以下几种情况: 自动识别 字符串编码 可以使用 chardet 模块自动识别 字符创编码 chardet 使用方法 unicode 转换为其它编码(GBK, GB2312等) 例如:a为unicode编码 要转为gb2312.a.encode('gb2312') # -*- coding=gb2312 -*-

python学习笔记-Day5(反射、特殊方法、OS模块)

反射 # 反射(或叫自省): 有时候我们会碰到这样的需求,需要执行对象的某个方法,或是需要对对象的某个字段赋值,而方法名或是字段名在编码代码时并不能确定,需要通过参数传递字符串的形式输入 # 这就是我们反射功能: 通过字符串形式去调用对象 # 例, 我有一个导向页面commons.py def login(): print('登录') def home(): print('HOME PAGE') def logout(): print('logout !!!') # 我需要根据用户输入,去执行对

OpenCV之Python学习笔记

OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书<OpenCV Computer Vision with Python>,于是就看一遍,顺便把自己掌握的东西整合一下,写成学习笔记了.更需要的朋友参考. 阅读须知: 本文不是纯粹的译文,只是比较贴近原文的笔记:         请设法购买到出版社出版的书,支持正版. 从书名就能看出来本书是介绍在Pytho

python学习笔记12-模块使用

python学习笔记12-模块使用 模块os,sys 什么是模块? 模块os,sys 模块是Python组织代码的一种基本方式 一个Python脚本可以单独运行,也可以导入到另外一个脚本运行,用import hello语句来导入,不用加入.py 什么是Python的 包? Python的模块可以按照目录组织为包 创建一个包的步骤: 创建一个名字为包名的目录 在改目录下创建一个__init__.py文件 根据需要,在该目录下存放脚本文件或已编译的扩展及子包 import pack.m1,pack.

python学习笔记2—python文件类型、变量、数值、字符串、元组、列表、字典

python学习笔记2--python文件类型.变量.数值.字符串.元组.列表.字典 一.Python文件类型 1.源代码 python源代码文件以.py为扩展名,由pyton程序解释,不需要编译 [[email protected] day01]# vim 1.py #!/usr/bin/python        print 'hello world!' [[email protected] day01]# python 1.py hello world! 2.字节代码 Python源码文件

Python学习笔记--未经排版

Python 学习笔记 Python中如何做到Print() 不换行 答:Print("输出内容",end='不换行的分隔内容'),其中end=后面为2个单引号 注:在Python 2.x中,Print "输出内容", 即在输出内容后加一逗号 Python中 is 和 == 的区别 答:Python中的对象包含三要素:id.type.value 其中id用来唯一标识一个对象,type标识对象的类型,value是对象的值 is判断的是a对象是否就是b对象,是通过id来

Python学习笔记_Python对象

Python学习笔记_Python对象 Python对象 标准类型 其他内建类型 类型对象和type类型对象 Python的Null对象None 标准类型操作符 对象值的比较 对象身份比较 布尔类型 标准类型的内建函数 typeObj cmpobj1 obj2 strobj reprobj typeobj isinstanceobj 标准类型的分类 存储模型 更新模型 访问模型 不支持的类型 Python学习笔记_Python对象 首先来理解一个通俗的含义,什么是对象?其实对象无论在什么语言里面

OpenCV for Python 学习笔记 三

给源图像增加边界 cv2.copyMakeBorder(src,top, bottom, left, right ,borderType,value) src:源图像 top,bottem,left,right: 分别表示四个方向上边界的长度 borderType: 边界的类型 有以下几种: BORDER_REFLICATE # 直接用边界的颜色填充, aaaaaa | abcdefg | gggg BORDER_REFLECT # 倒映,abcdefg | gfedcbamn | nmabcd