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

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

ecoding=utf-8
from collections import Iterable
print(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 Template
s = Template('$x')
5.打印水果价格表格
width = input('please enter width:')
int_width = int(width)
price_width = 10
item_width = int_width - price_width
header_format = '%-*s%*s'
format = '%-*s%*.2f'

print '=' * int_width

print header_format % (item_width,'Item',price_width,'Price')
print '-' * int_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.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 d
returned_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 deepcopy
d = {}
d['names'] = ['Alfred','Bertrand']
c = d.copy()
dc = deepcopy(d)
d['names'].append('Clive')
print c
print dc
#3.fromkeys方法 fromkeys方法使用给定的键建立新的字典,每个键默认对应的值为None
print {}.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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值