20161011 Python 读书笔记之 列表、元祖、字典

来源:互联网 发布:sql索引超出数组界限 编辑:程序博客网 时间:2024/05/20 12:49

1.判断是否为可迭代类型

ecoding=utf-8from collections import Iterableprint(isinstance('abc',Iterable))print(isinstance([1,2,3],Iterable))print(isinstance(123,Iterable))

2.Python内置的enumerate函数可以把一个list变成索引-元素对,这样就可以在for循环中同时迭代索引和元素本身:

for i,value in enumerate(['A','B','C']):    print(i,value)for x,y in[(1,1),(2,4),(3,9)]:    print(x,y)permissions = 'rx'print('w' in permissions)numbers = [100,34,678]print(len(numbers))print(max(numbers))print(min(numbers))print(max(2,3))print(min(9,3,2,5))a = [1,2,3]b = [4,5,6]a.extend(b)print(a)b = [1,2,3]c = 'abc'a = tuple(b)d = tuple(c)print(type(b),type(a),type(c),d,a)

3.字符串是不可变的,类似的分片赋值是不合法的.

4.字符串初始化

format = "hello.%s.%s enough for ya?"values = ('world','hot')print(format % values)from string import Templates = Template('$x')
5.打印水果价格表格
width = input('please enter width:')int_width = int(width)price_width = 10item_width = int_width - price_widthheader_format = '%-*s%*s'format = '%-*s%*.2f'print '=' * int_widthprint header_format % (item_width,'Item',price_width,'Price')print '-' * int_widthprint 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.95)print format % (item_width,'Prunes(4 lbs.)',price_width,12)
6.使用join字符串方法
seq = ['1','2','3','4','5','6']sep = '+'print sep.join(seq)print type(sep.join(seq))dirs = '','usr','bin','env'print '/'.join(dirs)print 'C:' + '\\'.join(dirs)
7.lower方法返回字符串的小写字母版
name = 'Gumby'names = ['gumby','smith','jones']if name.lower() in names:    print 'Found it'
8.replace方法返回某字符串的所有匹配项均被替换之后得到的字符串
print 'This is a test'.replace('is','ezz')
9.split方法是一个非常重要的字符串方法,它是join的逆方法,用来将字符串分割成序列(List形式)
print 'Using the default'.split()
10.strip方法返回出两侧空格的字符串(某些时候我们再输入一些东西的时候加入了空格,然后再做匹配的时候可以调用这个方法)

print '      internal whitespace is kept        '.strip()

11.也可以指定要除去的字符,将他们列为参数即可

print '***SPAM * for * everyone!!!***'.strip('*!')
12.创建和使用字典 dict函数不是真正的函数,它是个类型,就像list、tuple和str一样

items = [('name','Gumby'),('age',42)]d = dict(items)print d,d['name']
13.电话本例子
people = {    'Alice':{        'phone' : '2341',        'addr' : 'Foo drice 23'    },    'Beth':{            'phone' : '9102',            'addr' : 'Bar street 42'        },    'Cecil': {        'phone': '3158',        'addr': 'Baz avenue 90'    }}#针对电话号码和地址使用的描述性标签,会在打印输出的时候用到labels = {    'phone' : 'phone number',    'addr' : 'address'}name = raw_input('Name:')#查找电话号码还是地址?使用正确的键:request = raw_input('Phone number(p) or address (a)?')if request == 'p': key = 'phone'if request == 'a': key = 'addr'#如果名字是字典中的有效键才打印信息:if name in people:    print "%s's %s is %s." %\          (name,labels[key],people[name][key])
14.字符串格式化在字典中的应用
template = '''<html><head><title>%(title)s<title></head><body><h1>%(title)s</h1><p>%(text)s</p></body>'''data = {'title':'My Home Page','text':'Welcome to my home page!'}print template % data

15.字典的一些方法

#1.clear方法  clear方法清楚字典中的所有项,所以无返回值d = {'age':42,'name':'Gumby'}print dreturned_value = d.clear()print d#2.copy方法 copy方法返回一个具有相同键-值对的新字典(这个方法实现浅复制,因为值本身就是相同的,而不是副本)。x = {'username':'admin','machines':['foo','bar','baz']}y = x.copy()y['username'] = 'mlh'y['machines'].remove('bar')print y,x#可以看到,当在副本中替换值的时候,原始字典不受影响,但是,如果修改了某个值,原始字典也会改变,因为同样的值也存储在原字典里。#避免这个问题可以使用深复制,复制其所包含的所有值。可以使用copy模块的deepcopy来完成操作from copy import deepcopyd = {}d['names'] = ['Alfred','Bertrand']c = d.copy()dc = deepcopy(d)d['names'].append('Clive')print cprint dc#3.fromkeys方法 fromkeys方法使用给定的键建立新的字典,每个键默认对应的值为Noneprint {}.fromkeys(['name','age'])print dict.fromkeys(['name','age'])print dict.fromkeys(['name','age'],'(unknown)')#4.get方法 get方法是个更宽松的访问字典项的方法。一般来说,如果试图访问字典中不存在的项时会出错:#字典方法实例#使用get()的简单数据库people = {    'Alice':{        'phone' : '2341',        'addr' : 'Foo drice 23'    },    'Beth':{            'phone' : '9102',            'addr' : 'Bar street 42'        },    'Cecil': {        'phone': '3158',        'addr': 'Baz avenue 90'    }}labels = {    'phone' : 'phone number',    'addr' : 'address'}name = raw_input('Name:')#查询电话号码还是地址?request = raw_input('Phone number (p) or address(a)?')#使用正确的键:key = request #如果请求既不是'p'也不是'a'if request == 'p' : key = 'phone'if request == 'a' : key = 'addr'#使用get()提供默认值:person = people.get(name,{})label = labels.get(key)result = person.get(key,'not available')print "%s's %s is %s" % (name,label,result)#5.has_key方法 has_key方法可以检查字典中是否含有给出的键。表达式d.has_key(k)相当于k in d.d = {}print d.has_key('name')d['name'] = 'Eric'print d.has_key('name')#6.items和iteritems#items方法将所有的字典项以列表方式返回,这些列表项中的每一项都来自于(键,值)。但是项在返回时没有特定的顺序。d = {'title':'Python Web Site','url':'http://www.python.org','spam':0}print d.items(),type(d)#iteritems方法的作用大致相同,但是会返回一个迭代器对象而不是列表it = d.iteritems()print it#pop方法 pop方法用来获取对应于给定键的值,然后将这个键-值对从字典移除d = {'x':1,'y':2}print d.pop('x')print d


0 0