Python学习笔记(一)

在编写Python时,当使用中文输出或注释时运行脚本,会提示错误信息:
SyntaxError: Non-ASCII character '\xe5' in file *******

解决方法:
python的默认编码文件是用的ASCII码,你将文件存成了UTF-8,解决办法很简单,在文件开头加入

# -*- coding: UTF-8 -*-    或者  #coding=utf-8


列表:

#coding=utf-8

 

#列表的创建及删除操作

list = ["apple","banana","grape","orange"]
print list
print list[2]
list.append("watermelon")
list.insert(1,"grapefruit")
print list
list.remove("grape")
print list
print list.pop()
print list


 

#如果元组中有两个相同的元素,则删除对应元素时删除的是第一个出现的元素

 

#负索引,分片,遍历二元组

list = ["apple","banana","grape","orange"]
print list[-2]
print list[1:3]     #从第2个元素到第3个元素
print list[-3:-1]
list = [["apple","banana"],["grape","orange"],["watermelon"],["grapefruit"]]
for i in range(len(list)):
    print "list[%d]:"% i , "" ,
    for j in range(len(list[i])):
        print list[i][j]


 

#列表的连接功能

list = ["apple","banana","grape","orange"]
print list[-2]
print list[1:3]     #从第2个元素到第3个元素
print list[-3:-1]
list = [["apple","banana"],["grape","orange"],["watermelon"],["grapefruit"]]
for i in range(len(list)):
    print "list[%d]:"% i , "" ,
    for j in range(len(list[i])):
        print list[i][j]

#列表的查找,排序与反转

list_4 = ["apple","banana","orange","grape"]
print list_4.index("grape")     #返回元素在列表的位置
print list_4.index("orange")
print "orange" in list_4
list_4.sort()
print "Sort list_4:",list_4
list_4.reverse()
print "Reversed list_4:",list_4
list_4.append("juice")
print list_4
list_4.index(1,list_1)
print list_4
list_4.remove("lemon")
print list_4
list_4.extend("hello")
print list_4


 

 

 

元组:

#coding=utf-8

#元组的创建

 
tuple_name = ('apple','banana','orange')
print tuple_name[1]


 

#如果只有一个元素需要加逗号,否则无法区分是元组还是表达式

tuple_name_1 = ('apple')
print tuple_name_1[0]
 
tuple_name_2 = ('apple',)
print tuple_name_2[0]
 


#元组不能添加或者删除任何元素,所以元组不存在任何添加删除元素的方法

 

#负数索引元组

tuple_name_3 = ('apple','banana','orange')
print tuple_name_3[-1]
print tuple_name_3[-2]
print tuple_name_3[-3]


#分片截取后得到的是一个元组

print tuple_name_3[1:3]
print tuple_name_3[0:-2]
print tuple_name_3[2:-2]
 


#元组的创建可以称为打包过程,相反解包是元组中的值分给各个变量

tuple_name_4 = ('apple','banana','orange')
q,w,e = tuple_name_4
print q,w,e


 

#二元元组的遍历

tuple_name_5 = (('apple','banana'),('orange',),('waterlelon',),('grapefruit',))
for i in range(len(tuple_name_5)):
    print "tuple_name_5[%d]:"% i ,'',
    for j in range(len(tuple_name_5[1])):
        print tuple_name_5[i][j]


 

#map()实现元组的遍历

tuple_name_6 = (('apple','banana'),('orange',),('waterlelon',),('grapefruit',))
k = 0
for t in map(None,tuple_name_6):
    print "tuple_name_6[%d]:" % k ,"",
    for x in t :
        print x,"",
    print
k+=1


 

 

 

字典:

#coding=utf-8

 

#字典的创建和掩饰

dict = {"a":"apple","b":"banana","g":"grape","o":"orange"}
print dict
print dict["a"]
 


#字典的访问

dict["w"] = "watermelon"
del(dict["a"])
dict["g"] = "grapefruit"
print dict.pop("b")
print dict
dict.clear()
print dict


 

#实现字典的遍历

dict = {"a":"apple","b":"banana","g":"grape","o":"orange"}
for (k,v) in dict.items():
    print "dict[ %s ] =" % k,v
 
print dict.keys()
print dict.values()


 

#字典中元素获得方法

print dict.get("c","apple")
print dict.get("e","apple")


 

#字典中更新方法

dict_1 = {"s":"silei"}
print dict_1
dict.update(dict_1)
print dict


#字典不是序列,所以更新后的字典是没有顺序的

 

#字典设置默认初始值

dict = {}

dict.setdefault("a")
print dict
dict["a"] = "apple"
dict.setdefault("a","default")
print dict
 


#字典的排序

dict = {"a":"apple","b":"banana","g":"grape","o":"orange"}
print dict


#按照key排序
print sorted(dict.items(),key=lambda d:d[0])
#按照value排序
print sorted(dict.items(),key=lambda d:d[0])


 

#字典的复制

#浅拷贝

dict_3 ={"a":"apple","b":"banana"}
dict_4 ={"c":"orange","d":"grap"}
dict_3 = dict_4.copy()
print dict_3


#深拷贝

import copy
dict ={"a":"apple","b":{"g":"grape","o":"orange"}}
dict2 = copy.deepcopy(dict)
dict3 = copy.copy(dict)#copy().copy()等于dict.copy()
dict2["b"]["g"] = "orange"
print dict
dict3["b"]["g"] = "orange"
print dict


 

#全局字典

#sys.modules是一个全局字典,该字典是Python启动后就加载在内存中的,每当加载新的模块的时候,都将记录这个模块,

这个字典就起到了缓存的作用。每当第一次加载这个模块的时候字典将自动记录这个模块,当第2次引入时,Python会在

字典中查找,从而加快了程序的运行速度

import sys
print sys.modules.keys()
print sys.modules.values()
print sys.modules["os"]



模板:

字符串模板已经作为PEP 292的一部分增加到Python 2.4中。

Example

 
import string
 
a = { 'goods' : 'apple' }
 
b = string.Template("""
Fruit	 :$goods
Things	 :${goods} is a Fruit
Escape	 :$$
""")
 
print 'TEMPLATE:',b.substitute(a)
 
c =	"""
Fruit	 :%(goods)
Things	 :%(goods) is a Fruit
Escape	 :%%
"""
 
print 'INTERPOLATION',c % a


 

 

模板不需要考虑参数类型,数值会转换为字符串,再将字符串转换到结果中。

 

safe_substitute()可以避免未能提供模板所需要参数值时可能产生的异常。

 

Example

 
import string
 
a = {'goods':'apple'}
 
b = string.Template("$goods")
 
try:
print 'substitute()  :',b.substitute(a)
except KeyError, err:
print 'Error:',str(err)
 
print 'safe_substitute():',b.safe_substitute(a)
 
高级模板:
 
import string
 
template_text = '''
    Delimiter : %%
    Replaced : %with_underscore
    Ignored : %notunderscored
'''
 
d = {
    'with_underscore' : 'replace',
    'notunderscored' : 'not replace,'
}
 
class MyTemplate(string.Template):
    delimiter = '%'
    idpattern = '[a-z]+_[a-z]+'
 
t = MyTemplate(template_text)
print 'Modified ID pattern:'
print t.safe_substitute(d)


 

 

这里重写MyTemplate

String中的源代码如下所示

 


但是被修改为

class MyTemplate(string.Template):

    delimiter = '%'

idpattern = '[a-z]+_[a-z]+'

使得定界符修改为%,变量名必须带有下划线才会被替换

更复杂的替换


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值