@king
2015-10-10T19:03:32.000000Z
字数 4774
阅读 2644
Python
# 输出实例,Python3 必须加括号
print ('hello','world')
# 输入实例
name = input();
#输入时提示
name = input('please enter your name:');
#格式转换,如果输入字母等非数字字符会报错
birth = int(input('birth:'))
#转义
print '\\\n\\'
#防止转义
print r'\\\n\\'
#多行内容表示,用三引号包括
print ('''line1
line2
ling2''')
#布尔值
print (3 > 2)
#转化成UTF-8编码
str = '中文'.encode('utf-8'))
#将上述字符串解码并输出
print(str.decode('utf-8'))
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#格式化输出实例
print('Hello,%s' % 'world')
print('%s, %s' % ('Hello', 'world'))
#格式化整数和小数
print('%2d-%02d' %(3,1))
print('%.2f' %3.1415926)
#万能格式化%s,可以替代所有格式化
print('%s-0%s' %(3,1))
print('%s' %3.1415926)
#对于Unicode字符串,用法完全一样,但最好确保替换的字符串也是Unicode字符串
print(u'Hi,%s' % u'Jason0539')
#有占位符的情况下输出百分号%,用双%即可
print('growth rate:%d%%' % 7)
#列表list,可变的有序列表
classmates = ['Jack','Bob','Tracy']
#len函数获取它的长度
len(classmates)
#获取某个元素,用中括号索引
classmates[2]
#倒数索引,可以倒序获取数组元素
classmates[-1]
#append追加元素到末尾
classmates.append('Adam')
#insert插入到指定位置
classmates.insert(0,'Jason0539')
#pop 删除并返回末尾元素
classmates.pop()
#pop 删除并返回指定位置元素
classmates.pop(0)
#元素改变,直接赋值即可
classmates[0]='Jason0539'
#list可以嵌套,可用二维索引
s = ['python','java',['asp','jsp'],'scheme']
print(s[2][1])
#空列表
l=[]
#不可变有序的数组
#定义元组
classmates = ('Michael','Bob','Tracy')
classmates = () # 空tuple
t = (1,) # 单元素tuple
#注意不能用 t = (1) 来定义, 因为它定义的不是tuple,是 1 这个数,这是因为括号既可以表示tuple,又可以表示数学公式中的小括号,这就产生了歧义,因此,Python规定,这种情况下,按小括号进行计算,计算结果自然是1。
#表面上可变的tuple
t = ('a','b',['A','B'])
t[2][0]='X'
t[2][1]='Y'
#表面上看,tuple的元素确实变了,但其实变的不是tuple的元素,而是list的元素。tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向 ‘a’,就不能改成指向 ‘b’ ,指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的
字典dict
#字典 dict 即键值对组,dict的key必须是不可变对象。
d = {'Michael':95,'Bob':75,'Tracy':85}
#把数据放入dict的方法,除了初始化时指定外,还可以通过key放入,在这之前,d 必须被声明,否则会报错
d['Jason']=5390
#判断key是否在字典中,区分大小写
#1.in判断
'Jason' in d
#2.通过dict提供的get方法判断,如果key不存在,可以返回None,或者返回自己指定的默认value
d.get('Thomas')
d.get('Thomas',-1)
#3.要删除一个key,用pop(key)方法,对应的value也会从dict中删除
d.pop('Jason')
#set和dict类似,也是一组key的集合,但不存储value,没有重复的key
#要创建一个set,需要提供一个list作为输入集合
s = set([1,2,3])
#重复元素在set中自动被过滤
s = set([1,2,3,2,3,2,4])
print(s)
#通过add(key)方法可以添加元素到set中,可以重复添加,但没有效果
s.add(4)
#通过remove(key)方法可以删除元素
s.remove(4)
#判断元素是否在set中
5 in s
#set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作
s1 = set([1,2,3])
s2 = set([2,3,4])
print(s1 & s2)
print(s1 |s2 )
# 复制字符串,利用切片
s1 = 'king'
s2 = s1[::]
# 扫描字符串是否包含指定字符(串)
s1 = '12345678' # 待检查
s2 = '456' # 指定字符串
print(bool(sStr1.find(sStr2))) # 方法1
print(bool(len(s1 and s2)) # 方法2
# 将字符串前n个字符替换为指定的字符
s = '12345'
ch = 'r'
n = 3
s = n * ch + s[3:]
# 翻转字符串
s1 = '12345'
s2 = s1[::-1]
# 连接字符串
delimiter = ','
mylist = ['Brazil', 'Russia', 'India', 'China']
print(delimiter.join(mylist)) # Brazil,Russia,India,China
# 只显示字母与数字
def OnlyCharNum(s):
s2 = s.lower();
fomart = 'abcdefghijklmnopqrstuvwxyz0123456789'
for c in s2:
if not c in fomart:
s = s.replace(c, '');
return s;
s.startwith(prefix[,start[,end]]) # 是否以prefix开头
s.endwith(suffix[,start[,end]]) # 以suffix结尾
s.isalnum() # 是否全是字母和数字,并至少有一个字符
s.isalpha() # 是否全是字母,并至少有一个字符
s.isdigit() # 是否全是数字,并至少有一个字符
s.isspace() # 是否全是空白字符、\t、\n,并至少有一个字符
s.islower() # s中的字母是否全是小写
s.isupper() # s中的字母是否便是大写
s.istitle() # s是否是首字母大写的
s.upper() #转大写
s.lower() #转小写
s.capitalize() #首字母大写,其余小写
s.title() #把每个单词第一个字母大写,其余小写
s.swapcase() #大小写互换
s.ljust(width,[fillchar]) # 输出width个字符,左对齐,不足部分用fillchar填充,默认的为空格。
s.rjust(width,[fillchar]) # 右对齐
s.center(width, [fillchar]) #中间对齐
s.zfill(width) #把S变成width长,并在右对齐,不足部分用0补足
s.find(substr, [start, [end]]) # 返回S中出现substr的第一个字母的标号,如果S中没有substr则返回-1。
s.index(substr, [start, [end]]) # 与find()相同,只是在s中没有substr时,会返回一个运行时错误
s.rfind(substr, [start, [end]])
#从右边算起的第一次出现的substr的首字母标号,没有则返回-1
s.rindex(substr, [start, [end]]) # 与index类似,从右数
s.count(substr, [start, [end]]) #计算substr在s中出现的次数
s.replace(oldstr, newstr, [count])
#把s中的oldstar替换为newstr,count为替换次数。这是替换的通用形式,还有一些函数进行特殊字符的替换
s.strip([chars])
# 把s首尾的chars中的字符全去掉
s.lstrip([chars]) # 同上,仅查左首
s.rstrip([chars])
s.expandtabs([tabsize]) # 把s中的tab字符替换为空格,每个tab替换为tabsize个空格,默认是8个
s.split([sep, [maxsplit]]) # 以sep为分隔符,把S分成一个list。maxsplit表示分割的次数。默认的分割符为空白字符
s.rsplit([sep, [maxsplit]]) # 同上,从右开始
s.splitlines([keepends]) # 把S按照行分割符分为一个list,keepends是一个bool值,如果为真每行后而会保留行分割符。
s.join(seq) # 把seq代表的序列──字符串序列,用S连接起来
s.maketrans(from, to) # 返回一个256个字符组成的翻译表,其中from中的字符被一一对应地转换成to,所以from和to必须是等长的。
s.translate(table[,deletechars]) # 使用上面的函数产生的翻译表,把s进行翻译,并把deletechars中有的字符删掉。需要注意的是,如果s为unicode字符串,那么就不支持。 deletechars参数,可以使用把某个字符翻译为None的方式实现相同的功能。此外还可以使用codecs模块的功能来创建更加功能强大的翻译表。
s.encode([encoding,[errors]]) # 其中encoding可以有多种值,比如gb2312 gbk gb18030 bz2 zlib big5 bzse64等都支持。errors默认值为"strict",意思是UnicodeError。可能的值还有'ignore', 'replace', 'xmlcharrefreplace', 'backslashreplace' 和所有的通过codecs.register_error注册的值。
s.decode([encoding,[errors]])
这几个函数只在string模块中有:
string.atoi(s[,base]) # base默认为10,如果为0,那么s就可以是012或0x23这种形式的字符串,如果是16那么s就只能是0x23或0X12这种形式的字符串
string.atol(s[,base]) #转成long
string.atof(s[,base]) #转成float
这里再强调一次,字符串对象是不可改变的,也就是说在python创建一个字符串后,你不能把这个字符中的某一部分改变。任何上面的函数改变了字符串后,都会返回一个新的字符串,原字串并没有变。其实这也是有变通的办法的,可以用sS=list(s)这个函数把S变为由单个字符为成员的list,这样的话就可以使用s[3]='a'的方式改变值,然后再使用s="".join(s)还原成字符串