Python入门基础第十二课--知识补充
1.前言
在前面的学习中,我们已经讲了很多基础知识。包括变量、字符编码、模块、字符串、序列、列表、元组、字典、语句一系列基础知识,不知道你掌握了多少。这些基础知识是我们必须得牢记的,在后续的章节中,我们要进入比较大的程序的设计和编写,自然而然就需要用到前面的基础知识。温故而知新,可以为师矣。在继续学习的过程中,记得返回去看一看。
这一节,来介绍一些以前没有介绍到的基础知识。相信会有很大的帮助!
2. 字符串格式化
字符串我们已经介绍过,而且介绍的很详细。利用索引和分片访问字符串中的单个字符也是没有问题,下面会讲到如何使用字符串格式化其他的值,并会了解一下字符串的分割、连接、搜索等方法的用法和功能。
格式化操作符的右操作符可以是任意类型的数,如果是元组或者映射类型,那么字符格式化将会有所不同。如果是元组的话,则其中的每一个元素都会被单独格式化,每个值都需要一个对应的转换说明符。
基本的转换说明符包括下面的这些部分:
- %字符:标记转换说明符的开始
- 转换标志:-表示左对齐,+表示在转换值之间要加上正负号,“”表示正数之间保留空格,0表示转换值若位数不够则用0填充。
- 最小字段宽度:转换以后的字符至少应该具有该指定的宽度,如果给定的是*,则宽度值会从元组中读出。
- 点(.)后面跟精度值:如果转换的是实数,精度值就表示出现在小数点后面的位数。如果表示的是字符串,那么该参数就是表示最大字段宽度。
- 转换类型:
s | 字符串(使用str转换任意类型的python对象) |
d,i | 带符号的十进制整数 |
o | 不带符号的八进制 |
u |
不带符号的十进制 |
x | 不带符号的十六进制(小写) |
X | 不带符号的十六进制(大写) |
e | 科学计数法表示的浮点数(小写) |
E | 科学计数法表示的浮点数(大写) |
f,F | 十进制浮点数 |
g | 如果指数大于-4或者小于精度值则和e相同,其他情况和f相同 |
G | 如果指数大于-4或者小于精度值则和E相同,其他情况和F相同 |
C | 单字符 |
r | 字符串(使用reper转换任意python对象) |
简单转换
简单的转换只需要写出相对应的转换类型便可,很简单,我们来看看:
>>> 'Price of eggs: $%d' %100
'Price of eggs: $100'
>>> from math import pi
>>> 'Pi: %f....' %pi
'Pi: 3.141593....'
>>> 'Using str: %s' %42L
'Using str: 42'
在上面的例子里面,我们可以看到简单转换真的很简单,记住上面表格里所l列举的转换类型就可以得到你想要的东西。此外,我们的转换说明符还可以包括宽度和精度。字段宽度是转换后的值所保留的最小字符个数,精度则是结果中应该包含的小数位数,或者是转换后的值所能包含的最大字符个数。
宽度和精度这两个参数都应该是整数,首先是宽度,然后再是精度,两者之间通过点号来分隔。对于我们来说这两个参数都是可选参数,但是一旦给出了精度就必须要有点号。来看一看一些例子:
>>> '%10f' %pi #宽度10
' 3.141593'
>>> '%10.2f' %pi #宽度10 精度2
' 3.14'
>>> '%.2f' %pi #精度2
'3.14'
我们在前面说过,还可以使用*号来作为字段宽度或者精度,这时候,数值会从元组参数中读出:
>>> '%.*s' %(5,'Guido van Rossum')
'Guido'
>>> '%.*s' %(10,'Guido van Rossum')
'Guido van '
再一个,我们还讲过符号、对齐和利用0填充,这部分让我直接来看一些例子,更加明了。
>>> '%010.2f' %pi #使用0来填充,而并不表示010数字 为8
'0000003.14'
>>> '%-10.2f' %pi #左对齐
'3.14 '
>>> print ('% 5d' % 10)+ '\n' +('% 5d' % -10) #中间有空格的输出,在对齐正负数时候会很有用
10
-10
>>> print ('%+5d' % 10)+ '\n' +('%+5d' % -10) #+号不管是正数还是负数都标出符号(同样是在对齐的时候很有用)
+10
-10
3.字符串方法
前面介绍了一些常用的字符串方法,很常用也很基础,现在我们在这里再补充一些实用的字符串方法,提供给大家参考。
- find方法
find方法可以在一个比较长的字符串中查找子串。返回子串所在位置的最左端索引,如果没有找到则返回-1.来看看例子:
>>> title="Monty Python's Flying Circus"
>>> title.find('Monty')
0
>>> title.find('Python')
6
>>> title.find('Flying')
15
>>> title.find('Zirquss')
-1
- join方法
join方法是非常重要的字符串方法,它是split方法的逆方法,用来连接序列中的元素:
>>> seq=[1,2,3,4,5,6,7,8,9,10]
>>> sep='+'
>>> sep.join(seq) #连接数字列表
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: sequence item 0: expected string, int found
>>> seq=['1','2','3','4','5','6','7','8','9','10']
>>> sep.join(seq) #连接字符串列表
'1+2+3+4+5+6+7+8+9+10'
可以看到,需要连接的序列元素必须都是字符串,连接数字列表的时候会出错。
- split方法
这是join的逆方法,用来将字符串分割成序列,来看看:
>>> '1+2+3+4+5+6+7+8+9+10'.split('+')
['1', '2', '3', '4', '5', '6', '7', '8', '9', '10']
矮油,是不是很神奇,对比一下上面的程序。如果不提供任何分割符,程序会把所有的空格作为分隔符(空格、制表。换行)
4.python zip()函数
zip()函数用于将课迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回这些元组组成的列表。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用*操作可以将元组解压为列表。来看看具体的例子:
>>> a=[1,2,3]
>>> b=[4,5,6]
>>> c=[4,5,6,7,8]
>>> zipped=zip(a,b) #打包为元组的列表
>>> print zipped #元素个数与最短的列表一致
[(1, 4), (2, 5), (3, 6)]
>>> print zip(a,c)
[(1, 4), (2, 5), (3, 6)]
>>> zip(*zipped) #与zip相反,可以理解为解压,返回二维矩阵式
[(1, 2, 3), (4, 5, 6)]
好咯,常用的也就在这里给大家添加这么多,希望大家能够记住并掌握。下一章节预告-抽象
上一篇: Linux下的常用命令+文件系统分布