欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python入门基础第十二课--知识补充

程序员文章站 2022-05-12 22:03:19
...

    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)]

 好咯,常用的也就在这里给大家添加这么多,希望大家能够记住并掌握。下一章节预告-抽象


相关标签: Python 知识补充