Dave Python练习二—字符串
#encoding=utf-8
#序列:字符串、列表和元组
#*******************************************
#***************** 字符串 ****************
#*******************************************
#************Part 1: 序列 ***********************
#序列,包括下面这些:字符串(普通字符串和unicode 字符串),列表,和元组类型。
#序列
#序列类型有着相同的访问模式:它的每一个元素可以通过指定一个偏移量的方式得到。
#下标偏移量是从0 开始到 总元素数-1 结束 -- 之所以要减一是因为我们是从0 开始计数的。
#序列类型操作符
#按照优先级从高到底的顺序排列
#
#序列操作符 作用
#seq[ind] 获得下标为ind 的元素
#seq[ind1:ind2] 获得下标从ind1 到ind2 间的元素集合
#seq * expr 序列重复expr 次
#seq1 + seq2 连接序列seq1 和seq2
#obj in seq 判断obj 元素是否包含在seq 中
#obj not in seq 判断obj 元素是否不包含在seq 中
#成员关系操作符 (in, not in)
#成员关系操作符使用来判断一个元素是否属于一个序列的。比如对字符串类型来说,就是
#判断一个字符是否属于这个字符串,对和元组类型来说,就代表了一个对象是否属于该对象序
#列。in/not in 操作符的返回值一般来讲就是True/False,满足成员关系就返回True,否则返
#回False。该操作符的语法如下:
#obj [not] in sequence
#连接操作符( + )
#这个操作符允许我们把一个序列和另一个相同类型的序列做连接。语法如下:
#sequence1 + sequence2
#该表达式的结果是一个包含sequence1 和sequence2 的内容的新序列.注意,这种方式看
#起来似乎实现了把两个序列内容合并的概念,但是这个操作不是最快或者说最有效的。对字符
#串来说,这个操作不如把所有的子字符串放到一个列表或可迭代对象中,然后调用一个join
#方法来把所有的内容连接在一起节约内存;类似地,对列表来说,我们推荐读者用列表类型的
#extend()方法来把两个或者多个列表对象合并.当你需要简单地把两个对象的内容合并,或者说
#不能依赖于可变对象的那些没有返回值(实际上它返回一个None)的内建方法来完成的时候时,
#连接操作符还是很方便的一个选择.
#重复操作符 ( * )
#当你需要需要一个序列的多份拷贝时,重复操作符非常有用,它的语法如下:
#sequence * copies_int
#copies_int 必须是一个整数(不能是长整数).像连接操作符一样,该操
#作符返回一个新的包含多份原对象拷贝的对象。
#切片操作符 ( [], [:], [::] )
#简单地讲,所谓序列类型就是包含一些顺序排列的对象的一个结构.你可以简单的用方括号
#加一个下标的方式访问它的每一个元素,或者通过在方括号中用冒号把开始下标和结束下标分开的方式来访问一组连续的元素.
#
#访问某一个数据元素的语法如下:
#sequence[index]
#sequence 是序列的名字,index 是想要访问的元素对应的偏移量.偏移量可以是正值,范围
#从0 到偏移最大值(比序列长度少一),用len()函数(下一节会讲),可以得到序列长度,实际
#的范围是 0 <= inde <= len(sequece)-1 .另外,也可以使用负索引,范围是 -1 到序列的负
#长度,-len(sequence), -len(sequence) <= index <= -1.正负索引的区别在于正索引以序列
#的开始为起点,负索引以序列的结束为起点.
#内建函数(BIFs)
#序列本身就内含了迭代的概念,之所以会这样,是因为迭代这个概念就是从序列,迭代器,或者其他支持迭代操作的对象中泛化得来的
#类型转换
#内建函数list(),str()和tuple()被用做在各种序列类型之间转换。你可以把它们理解成
#其他语言里面的类型转换,但是并没有进行任何的转换。这些转换实际上是工厂函数,
#将对象作为参数,并将其内容(浅)拷贝到新生成的对象中。
#所谓浅拷贝就是只拷贝了对对象的索引,而不是重新建立了一个对象
#序列类型转换工厂函数
#函数 含义
#list(iter) 把可迭代对象转换为列表
#str(obj) 把obj 对象转换成字符串(对象的字符串表示法)
#unicode(obj) 把对象转换成Unicode 字符串(使用默认编码)
#basestring() 抽象工厂函数,其作用仅仅是为str 和unicode 函数提供父类,所以不能被实例化,也不能被调用。
#tuple(iter) 把一个可迭代对象转换成一个元组对象
#Operational
#Python 为序列类型提供以下可操作BIFs.注意,len(),reversed()和sum()函数只能接受序列类型对象作为参数,
#而剩下的则还可以接受可迭代对象做为参数,另外,max()和min()函数也可以接受一个参数列表.
#************Part 2: 字符串 ***********************
#Python 里面单引号和双引号的作用是相同的,Python 实际上有3 类字符串.
#通常意义的字符串(str)和Unicode 字符串(unicode)实际上都是抽象类basestring 的子类.这个basestring 是不能实例化的.
#字符串的创建和赋值
#str='Dave is DBA!'
#print(str)
#str1="dave is dba"
#print(str1)
#--双引号和单引号的作用是一样的
#访问字符串的值(字符和子串)
#str='What is Oracle!'
#print(str[0],str[4:6])
#改变字符串
#str1='dave'
#print(str1,id(str1))
#str1='oracle'
#print(str1,id(str1))
#-->
#dave 35562528
#oracle 35562080
#跟数字类型一样,字符串类型也是不可变的,所以你要改变一个字符串就必须通过创建一个新串的方式来实现
#删除字符和字符串
#字符串是不可变的,所以不能仅仅删除一个字符串里的某个字符,你能做的
#是清空一个空字符串,或者是把剔除了不需要的部分后的字符串组合起来形成一个新串。
#在大部分应用程序里,没有必要显式的删除字符串。定义这个字符串的代码最终会结束,那时Python 会自动释放这些字符串.
#str1='what a 易做图ing day'
#str1=str1[0:5]+str1[7:]
#print(str1)
#-->what 易做图ing day
#这里通过拼接来删除,这里是创建了一个新的对象,手工del 对象:
#del str1
#************Part 3: 字符串和操作符 ***********************
#标准类型操作符
#str1='oracle'
#str2='mysql'
#print(str1>str2)
#-->True
#在做比较操作的时候,字符串是按照ASCII 值的大小来比较的.
#序列操作符切片( [ ] 和 [ : ] )
#正向索引时,索引值开始于0,结束于总长度减1。如果开始索引或者结束索引没有被指定,则分别以字符串的第一个和最后一个索引值为默认值。
#str1='the big bang
补充:Web开发 , Python ,