前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python基础教程 读书笔记 第三章 使用字符串

Python基础教程 读书笔记 第三章 使用字符串

作者头像
统计学家
发布2019-04-10 16:51:01
4690
发布2019-04-10 16:51:01
举报

2.3列表

2.3.1list函数

>>> list('hello')

['h', 'e', 'l', 'l', 'o']

2.3.2基本的列表操作

1.改变列表:元素赋值

>>> x=[1,1,1]

>>> x[1]=2

>>> x

[1, 2, 1]

2.删除元素

>>> names=['alice','beth','cecil','dee-dee','earl']

>>> del names[2]

>>> names

['alice', 'beth', 'dee-dee', 'earl']

3.分片赋值

>>> name=list('Perl')

>>> name

['P', 'e', 'r', 'l']

>>> name[2:]=list('ar')

>>> name

['P', 'e', 'a', 'r']

可以使用与原序列不等长的序列将分片替换:

>>> name=list('Perl')

>>> name[1:]=list('ython')

>>> name

['P', 'y', 't', 'h', 'o', 'n']

可以在不需要替换任何原有元素的情况下插入新的元素

>>> numbers=[1,5]

>>> numbers[1:1]=[2,3,4]

>>> numbers

[1, 2, 3, 4, 5]

2.3列表方法

1.append

>>> lst=[1,2,3]

>>> lst.append(4)

>>> lst

[1, 2, 3, 4]

2.count

>>> ['to','be','or','not','to','be'].count('to')

2

>>> x=[[1,2],1,1,[2,1,[1,2]]]

>>> x.count(1)

2

>>> x.count([1,2])

1

3.extend

>>> a=[1,2,3]

>>> b=[3,4,5]

>>> a.extend(b)

>>> a

[1, 2, 3, 3, 4, 5]

>>> a=a+b效果相同

4.index

>>> knights=['we','are','the','knights','who','say','ni']

>>> knights.index('who')

4

>>> knights[4]

'who'

5.insect

>>> numbers=[1,2,3,5,6,7]

>>> numbers.insert(3,'four')

>>> numbers

[1, 2, 3, 'four', 5, 6, 7]

6.pop

移除列表中的一个元素,默认是最后一个

>>> x=[1,2,3]

>>> x.pop()

3

>>> x

[1, 2]

7.remove

>>> x=['to','be','or','not','to','be']

>>> x.remove('be')

>>> x

['to', 'or', 'not', 'to', 'be']

8.reverse

>>> x=[1,2,3]

>>> x.reverse()

>>> x

[3, 2, 1]

9.sort

>>> x=[4,5,3,1,7]

>>> x.sort()

>>> x

[1, 3, 4, 5, 7]

>>> x=[4,5,3,1,7]

>>> y=x[:]

>>> y.sort()

>>> x

[4, 5, 3, 1, 7]

>>> y

[1, 3, 4, 5, 7]

>>> y=x.sort()

>>> print y

None

应该是:

>>> x=[4,5,3,1,7]

>>> y=x[:]

>>> y.sort()

>>> x

[4, 5, 3, 1, 7]

>>> y

[1, 3, 4, 5, 7]

获取已排序的列表副本:

>>> x=[4,5,3,1,7]

>>> y=sorted(x)

>>> x

[4, 5, 3, 1, 7]

>>> y

[1, 3, 4, 5, 7]

10.高级排序

compare(x.y)函数会在x<y时返回负数,在x>y时返回正数,如果x=y则返回0

>>> cmp(40,33)

1

>>> cmp(33,40)

-1

>>> numbers=[5,2,9,7]

>>> numbers.sort(cmp)

>>> numbers

[2, 5, 7, 9]

2.4元组:不可变序列

如果你用逗号分隔了一些值,那么你就自动创建了元组。

>>> 1,2,3

(1, 2, 3)

>>> ()#空元组

()

2.4.1tuple函数

tuple函数的功能与list函数基本上是一样的:以一个序列作为参数并把它转换

为元组。

>>> tuple([1,2,3])

(1, 2, 3)

>>> tuple('abc')

('a', 'b', 'c')

2.4.2基本元祖操作

大致和序列类似

2.4.3元组的意义

元组可以在映射(和集合的成员)中当作键使用—而列表则不行

元组作为很多内建函数和方法的返回值存在,也就是说你必须对元组进行处理

。只要不尝试修改元组,那么,“处理”元组在绝大多数情况下就是把它们当

作列表来进行操作(除非需要使用一些元组没有的方法,例如index和count一般

来说,列表可能更能满足对序列的所有需求。

2.5小结

cmp(x, y)比较两个值

len(seq)返回序列的长度

list(seq)把序列转换成列表

max(args)返回序列或者参数集合中的最大值

min(args)返回序列或者参数集合中的最小值

reversed(seq)对序列进行反向迭代

sorted(seq)返回已排序的包含seq所有元素的列表

tuple(seq)把序列转换成元组

--------------------------------------------------------------

3.1基本字符串操作

字符串都是不可变的

>>> website='http://www.baidu.com'

>>> website[-3]='com'

Traceback (most recent call last):

File "<input>", line 1, in <module>

TypeError: 'str' object does not support item assignment

3.2字符串格式化:精简版

字符串格式化使用字符串格式化操作符即百分号名来实现。

在%的左侧放置一个字符串(格式化字符串),而右侧则放置希望格式化的值。可

以使用一个值,如一个字符串或者数字,也可以使用多个值的元组或者字典

>>> format="hello, %s,%s enough for ya?"

>>> values=('world','hot')

>>> print format %values

hello, world,hot enough for ya?

模板字符串

>>> from string import Template

>>> s=Template('$x,glorious $x!')

>>> s.substitute(x='slum')

'slum,glorious slum!'

3.3字符串格式化:完整版

如果右操作数是元组的话,则其中的每一个元素都会被单独格式化,每个值都

需要一个对应的转换说明符。

基本的转换说明符:

(1)%字符:标记转换说明符的开始。

(2)转换标志(可选):一表示左对齐,十表示在转换值之前要加上正负号,“”(空白字符)表示正数之前保留空格,0表示转换值若位数不够则用0填充。

(3)最小字段宽度(可选):转换后的字符串至少应该具有该值指定的宽度。如果是*,则宽度会从值元组中读出。

(4)点(.)后跟精度值(可选):如果转换的是实数,精度值就表示出现在小数点后的位数。如果转换的是字符串,那么该数字就表示最大字段宽度。如果是*,那么精度将会从元组中读出。

(5)转换类型

d .i带符号的十进制整数

o不带符号的八进制

u不带符号的十进制

x不带符号的十六进制(小写)

X不带符号的十六进制(大写)

e科学计数法表示的浮点数(小写)

E科学计数法表示的浮点数(大写)

f.F十进制浮点数

g如果指数大于一或者小于精度值则和e相同,其他情况与f相同

G如果指数大于一或者小于精度值则和〔相同,其他情况与F相同

C单字符(接受整数或者单字符字符串)

r字符串(使用repr转换任意Python对象)

s字符串(使用thon对象)

3.3.1简单转换

>>> 'Price of eggs:$%d'%42

'Price of eggs:$42'

>>> from math import pi

>>> 'Pi:%f...'% pi

'Pi:3.141593...'

>>> 'Using str:%s' % 42L

'Using str:42'

3.3.2字段宽度和精度

转换说明符可以包括字段宽度和精度。字段宽度是转换后的值所保留的最小字

符个数,精度(对于数字转换来说)则是结果中应该包含的小数位数,或者(对于

字符串转换来说)是转换后的值所能包含的最大字符个数。这两个参数都是整数

(首先是字段宽度,然后是精度),通过点号(.)分隔。虽然两个都是可选的参数

,但如果只给出精度,就必须包含点号:

>>> '%10f'% pi#字段宽10

' 3.141593'

>>> '%10.2f'% pi#字段宽10,精度2

' 3.14'

>>> '%.2f'% pi#精度2

'3.14'

>>> '%.5s' % 'Guide van Rossum'

'Guide'

3.3.3符号、对齐和0填充

在字段宽度和精度值之前还可以放置一个“标表”,该标表可以是零、加号、

减号或空格。零表示数字将会用0进行填充。

>>> '%010.2f'% pi#010作为字段宽度说明符,表示字段宽度为10,用0进行填

充空位

'00000003.14'

减号(-)用来左对齐数值:

>>>'%-10.2f' % pi

3.14

空白(“”)意味着在正数前加上空格。

>>>print('% 5d' % 10)+'\n'+('% 5d' %-10)F

10

-10

最后说说加号(+),它表示不管是正数还是负数都标示出符号

>>>print('% +5d' % 10)+'\n'+('% 5d' %-10)F

10

-10

字符串格式化示例

width=input('Please enter width:')

price_width=10

item_width=width-price_width

header_format='%-*s%*s'

format = '%-*s%*.2f'

print '='*width

print header_format % (item_width,'Item', price_width,'Price')

print '-' *width

print format % (item_width, 'Apples',price_width, 0.4)

print format % (item_width, 'Pears',price_width, 0.5)

print format % (item_width, 'Cantaloupes', price_width, 1.92)

print format % (item_width, 'Dried Apricots (16 oz.)',price_width, 8)

print format % (item_width, 'Prunes (4 lbs.)',price_width,12)

print'-'*width

运行结果

Please enter width:35

===================================

Item Price

-----------------------------------

Apples 0.40

Pears 0.50

Cantaloupes 1.92

Dried Apricots (16 oz.) 8.00

Prunes (4 lbs.) 12.00

-----------------------------------

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习与统计学 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档