《python核心编程》序列:字符串、列表和元组Python: Attribute Error - 'NoneType' object has no attribute

摘要:在python中,有一种数据类型,它的成员是有序排列的,可以通过下标偏移量访问,称之为“序列”,包括字符串、列表、元组。我们主要从简介、操作符、内建函数、特性、相关模块等方面来学习这些序列。

本文来源:《python核心编程》序列:字符串、列表和元组

1.序列



序列类型操作符:
seq[index],seq[index1:index2],seq*expr,seq1+seq2,obj in seq,obj not in seq


序列类型工厂转化函数:
list(iter),str(obj),unicode(obj),basestring(),tuple(iter)


序列类型的可用内建函数

enumerate(iter)
len(seq)
max(iter,key=None) or max(arg0,arg1...,key=NOne)
min...
reverse(seq)
sorted(iter,func=None,key=None,reverse=False)
sum(seq,init=0)
zip([it0,it1...intN])


来看两个例子:
1)
s='foobar'
for i,t in enumerate(s):
    print i, t
0 f
1 o
2 o
...
2)zip()
s,t='foa','obr'
zip(s,t)

[(f,o),(o,b),(a,r)]


 

2.字符串



成员操作符:in,not in


字符转换函数:ascii对应字符和数值之间的转换
>>>chr(65)
'A'
>>>ord('a')
97
字符串内建函数:参见string类
注意,python中字符串没有使用\0作为结束符,我们也不需要考虑字符串的结束问题。

另外,python中,字符串是不可变化的类型。只能通过重新创建字符串对象来改变某一个变量对应的字符串。


3.列表


3.1)基本操作
创建:[]
访问:list[index]
更新:append

删除:del\remove


列表创建:

  sample_list = ['a',1,('a','b')]

num_inc_list = range(30):创建列表

sample_list = [ initial_value for i in range(10)]:创建列表

sample_list = [initial_value]*list_length:创建某个长度的列表

list=list(tuple):使用集合对象创建列表


列表访问:

list_length = len(sample_list):获得列表长度


列表更新:


list.extend([1,2,3]):延长列表

list=list1+list2:列表的连接

list.insert(0,“start”):向列表中插入一个元素

list.reverse():列表反转

list.sort():列表排序

list.rsort():列表排序

list[i:j]=[2,3,4]:列表索引赋值


列表删除:


del sample_list[0]:删除列表某个元素

list.pop():列表删除最后一个元素

3.2)操作符

标准操作符:> < ==
序列类型操作符:切片[::]、[:]、[],成员关系操作符(in,not in);链接操作符(+);重复操作符(*)
列表类型操作符和列表解析:[]

3.3)内建函数
标准类型函数:cmp()
序列类型函数:len(),max(),min(),sorted(),reversed(),enumerate(),zip(),sum(),list(),tuple

列表类型内建函数:range()


   

    

list.append(obj)

向列表中添加一个对象obj

list.count(obj)

返回一个对象obj在列表中出现的次数

list.extend(seq)a

把序列seq的内容添加到列表中

list.index(obj, i=0, j=len(list))

返回list[k] == objk值,并k的范围在 i<=k<j;否则引发ValueError异常

list.insert(index, obj)

在索引量为index的位置插入对象obj

list.pop(index=−1)a

删除并返回指定位置的对象,默认是最后一个对象

list.remove(obj)

从列表中删除对象obj

list.reverse()

原地翻转列表

list.sort(func=None, key=None,reverse= False)b

以指定的方式排序列表中的成员,如果funckey参数指定,则按照指定的方式比较各个元素,如果reverse标志被置为True,则列表以反序排列

注意:那些可以改变对象值的可变对象的方法是没有返回值的;相反,对应的字符串方法却是有返回值的,因为字符串是不可变的。不要用list=list.reverse(),因为这样你将得到的list 是None。


可能的错误:

如果在进行python编程的时候,得到错误:Python: Attribute Error - 'NoneType' object has no attribute 

原因:

将list进行操作以后的返回值,重新赋值给list

3.4)列表的特殊性

列表有容器可变的特点,可以用来构建堆栈和队列。


3.5)与string的转化

string转化成list:list(mystring)

list转化成string:string.jion(mylist,"")

4.元组

概述:元组的创建、删除、访问、更新。


元组操作符和内建函数

创建、重复、连接

成员关系、切片

内建函数

操作符

像列表一样,元祖也没有它自己专用的操作符和内建函数。另外,sort、append等操作,因为元组具有不可变性,所以这些操作对元组是不可行的。

另外,元组是不可变的,但是它可以执行“重复”操作,而且元组是不可便的,但是元组所包含的可变对象是可变的。


所有的多对象的、逗号分割的、没有明确用符号定义的,这些集合默认的类型都是元组。

你可能感兴趣的:(python,字符串,序列,元组)