python 序列

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
也可以改变元组中数据类型为列表的元素:

>>> amazing = (['xyz','123'], 23, 'abc')
>>> amazing[0][1]
'123'
>>> amazing[0][1] = ['def','rst']
>>> amazing
(['xyz', ['def', 'rst']], 23, 'abc')

不可变对象的值式不可以改变的。这就意味着它们通过hash算法得到的值总是一个值。这是作为字典键值一个必备条件。(字典的键值必须式可‘hash’的对象,元组变量符合这一条件,列表变量则不可以)


列表 vs 元组

使用列表的情况:在管理动态数据集合时。

最好使用不可变类型变量的情况:如果维护一些敏感的数据,并且需要把这些数据传递给一个并不了解的函数(或者一个根本不是你写的API)这样使用会安全的多。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值