python 列表字符串字典

来源:互联网 发布:淘宝设置不包邮地区 编辑:程序博客网 时间:2024/06/05 20:19

学习笔记


列表

对象.方法(参数)

1.append

在末尾追加新对象


2.count

某个元素在列表中出现的次数

list.count('xxx')


3.extend

在末尾追加另一个序列

a.extend(b)


4.index

找出某个元素第一次出现的索引


5.insert

将对象插入到列表

numb.insert(3,'four')
等于

numb[3:3] = ['four']


6.pop

移除最后一个元素(默认),且返回值(唯一一个修改且返回值的方法)


7.remove

移除某个值的第一匹配项


8.reverse

列表中的元素反向


9.sort

在原位置排序
用sorted获得已排序的列表


10.高级排序

sort中加入参数实现

cmp()比较大小,python3已取消此函数

关键词参数key和reverse,必须提供一个在排序中提供的函数

x.sort(key=len)


元祖

tuple函数把一个序列转换为元祖

可以分片


元祖的意义:

可以在映射中当做键使用

元祖作为很多内建函数的返回值存在



字符串

字符串格式化%实现

只有元祖和字典可以格式化一个以上的值

"Hello, %s ,%s enough for ya?" % ('world','Hot')


模板字符串

string 模块提供Template

from string import Templates = Template("It's %{x}tastic!")s.substitute(x='slurm')

将参数x替换字符串中的$x,如果替代字段是单词的一部分要用括号

可以使用字典变量提供值/名称对

>>>s = Template('A $thing must never $action.')>>>d = {}>>>d['thing'] = 'gentleman'>>>d['action'] = 'show his socks'>>>s.substitute(d)'A gentleman must never show his socks.'


宽度和精度

点(.)后跟精度值,前面宽度,只有精度必须加点

可以使用*作为字段宽度或者精度

>>>‘%.*s’ % (5,'Guido van Rossum')'Guido'
宽度之前放一个标表,可以是0,+,-,空格,填充宽度

转换类型

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

不带符号的八进制

u 不带符号的十进制

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

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

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

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

f,F 十进制浮点数

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

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

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

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

s 字符串(使用str转换任意python对象)


string模块中的一些字符串(letters等python3中取消)

>>> import string>>> string.ascii_letters'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'>>> string.ascii_lowercase'abcdefghijklmnopqrstuvwxyz'>>> string.ascii_uppercase'ABCDEFGHIJKLMNOPQRSTUVWXYZ'>>> string.digits'0123456789'>>> string.hexdigits'0123456789abcdefABCDEF'>>> string.letters'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'>>> string.lowercase'abcdefghijklmnopqrstuvwxyz'>>> string.uppercase'ABCDEFGHIJKLMNOPQRSTUVWXYZ'>>> string.octdigits'01234567'>>> string.punctuation'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'>>> string.printable'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c'>>> string.whitespace'\t\n\x0b\x0c\r


find()在一个字符串中查找字符串,返回查找字符串的最左端索引,没有则返回-1

index()没有找到会报异常

find和index都能指定起始点和结束点参数

in操作符只能查找单个字符


join()能在队列中添加元素,队列元素只能是字符串

>>> seq = ['1','2','3','4','5']>>> sep = '+'>>> sep.join(seq)'1+2+3+4+5'

lower()返回字符串的小写字母版


replace() 查找并替换

>>> 'This is a test'.replace('is','eez')'Theez eez a test'


split() join()的逆方法

>>> '1+2+3+4+5'.split('+')['1', '2', '3', '4', '5']

strip() 返回除两侧空格的字符串,和lower一起使用很容易对比输入和存储的值

>>> '     internal whitespace is kept    '.strip()'internal whitespace is kept'
指定参数也可以除去两边指定的字符

translate() 和replace一样,但只能处理单个字符,优势是可以有一张转换表.maketrans是转换表

>>> intab = 'aeiou'>>> outtab = '12345'>>> trantab = str.maketrans(intab, outtab)>>> str = "this is string example...wow!!!">>> print(str.translate(trantab))th3s 3s str3ng 2x1mpl2...w4w!!!



字典


d = {key1 : value1,key2 : value2 }

字典中的键是唯一的,值不唯一


基本字典操作

len()

d[k]

d[k]=v

del d[k]

k in d 查找的是键 (v in list 查找值)


格式化字符串

每个%后面加上圆括号(键),后面再跟其他说明元素。

>>> phonebook{'Beth': '9012', 'Alice': '2341', 'Cecil': '3258'}>>> "Cecil's phone number is %(Cecil)s." % phonebook"Cecil's phone number is 3258."


字典方法

clear() 原地操作无返回值 d.clear()


copy() 在副本中替换值的时候原始字典不受影响,修改某个值原始字典也会改变

deepcopy() 需引入copy模块,改动与原字典不影响

深入:http://www.runoob.com/w3cnote/python-understanding-dict-copy-shallow-or-deep.html


fromkeys() 使用给定的键建立新的字典,每个键默认对应的值为None,也可以自己制定默认值

>>> {}.fromkeys(['name','age'],'male'){'name': 'male', 'age': 'male'}


get() 更宽松访问字典项的方法,访问不存在的键不会出现异常,还能自定义默认错误值

has_key() 相当于 in . python3不含

item() 将所有字典项以列表方式返回,每一项(键,值),返回没有顺序

iteritems() 作用大致相同,返回一个迭代器对象而不是列表

keys和iterkeys 将字典中的键以列表和迭代器返回

pop() 删除一个对,并返回这个键的值

popitem() 随机删除一个对

setdefault() 获得给定键的值,无给定键则设定键,返回相应值,没有键则返回默认值

update() 利用一个字典更新另一个字典
values和itervalues 返回字典中的值,以列表的形式或迭代器