python中的序列包括: 字符串 列表 元组
序列的内建函数:
list(),str(),unicode(),tuple(),basestring()
其中:list(), str(), tuple()被用于各种序列类型之间的转换,这些转换实际上是工厂函数,将对象作为参数,并将其内容(浅)拷贝到新生成的对象中。
所谓浅拷贝,就是只拷贝了对象的索引,而不是重新建立了一个对象。
序列可进行的操作:
enumerate(iter),len(seq),max(iter,key=None),min(), reverse(seq), sorted(iter, func=None, key=None, reverse=False), sum(seq, init=0), zip([it0,it1...itN])
字符串
1.是不可变的数据类型
2.成员操作符 in ,not in:不是用于判断一个字符串是否包含另一个字符串的。(这样的功能由string.find(), string.string.index() string.rfind() rindex()函数完成)
3.创建字符串:
>>> f = urllib.urlopen('http://'
... 'localhost'
... ':8000'
... '/cgi-bin/friends2.py')
4.适用于字符串的操作符:格式化操作符%
例: %#x 显示16进制数的0x前缀
’%d%%‘ % 100 显示100%
5,对于字典类型的参数的格式化操作符:
>>> 'There are %(howmany)d %(lang)s Quotation Symbols' % \
... {'lang':'Python', 'howmany':3}
'There are 3 Python Quotation Symbols'
这里,注意不可以遗漏转换类型符号
列表:可变的
元组:不可变
元组
元组是一种默认集合类型:
所有的多对象的,逗号分隔的,没有明确用符号定义的,这些集合默认的类型都是元组。所有函数返回的多对想(不包括有符号封装的)都是元组类型。因此,为了避免副作用,建议总是显示地用圆括号表达式表示元组或者创建元组。
>>> def foo1():
... return 1,2,3
...
>>> foo1()
(1, 2, 3)
>>> x,y = 1,2
>>> x,y
(1, 2)
只有一个元素的元组需要在元组分隔里面加一个逗号(,)以防止跟普通的分组操作符混淆。
>>> emptiestPossibleTuple = (None,) >>> print emptiestPossibleTuple (None,)
>>> ('xyx') 'xyx' >>> type(('xyx')) <type 'str'>
元组与 数字和字符串一样,都是不可变的。但我们可以通过现有元组再构造一个新元组的方式
也可以改变元组中数据类型为列表的元素:>>> t = ('abc','def') >>> id(t) 139639486254904 >>> t = t+('ghi','jkl') >>> id(t) 139639486637960
不可变对象的值式不可以改变的。这就意味着它们通过hash算法得到的值总是一个值。这是作为字典键值一个必备条件。(字典的键值必须式可‘hash’的对象,元组变量符合这一条件,列表变量则不可以)>>> amazing = (['xyz','123'], 23, 'abc') >>> amazing[0][1] '123' >>> amazing[0][1] = ['def','rst'] >>> amazing (['xyz', ['def', 'rst']], 23, 'abc')
列表 vs 元组
使用列表的情况:在管理动态数据集合时。
最好使用不可变类型变量的情况:如果维护一些敏感的数据,并且需要把这些数据传递给一个并不了解的函数(或者一个根本不是你写的API)这样使用会安全的多。