一.Python中的几种特殊数据类型小结

len()函数可以计算任意集合的大小

1 list:列表

是一种有序的数据集合,在列表数据结构中的类型并不唯一。与元组的区别是list为可变类型,可以直接修改元素,而tuple不可变。

定义形式:L=['Micha',100,True]

输出整个列表的时候显示为['Micha',100,True]

输出单个的数值则为:Micha

1.访问,直接使用L[0]表示第一个元素或者使用L[-1]表示最后一个数据,以此类推,但是注意访问不能越界(访问的序号不能超过元素的总数)。

2.添加新元素:使用L.append(100)直接将100加入列表末尾,或者使用L.insert(0,'paul')将paul插入任意位置。

3.删除元素:L.pop()删除最后一个元素,或者L.pop(2)删除第2个位置的元素。

4.替换元素:直接赋值就可以了L[2]=100

list下标为加n模n制,即lis[-1] = lis[len-1],下标范围[-len,len-1].

 

 

2 tuple:元组

类似于list,是一种有序的列表,访问的方式跟List结构一致。但是其一旦创立完毕就不能够更改,即不能插入,删除里面的元素,没有append,pop等函数。一个建议是为了安全起见,能用tuple代替list尽量用。

 

1. t=()其打印后输出的形式是()

若t中的数据为一个数字则需要在后面加逗号,以区分普通数字,如t=(1,),打印出(1,)而非1,多元素的话则没有这个要求。

2. 可以在不变的tuple中加入可变的List如t=(‘a’,'b',['A','B'])

 

3 dict:字典

存放key-value键值对,可以根据key迅速地找出value,但key必须是不可变类型

d = {

'Adam': 95,

'Lisa': 85,

'Bart': 59

}

其中可以简单地使用 d[key] 的形式来查找对应的 value,这和 list 很像,不同之处是,list 必须使用索引返回对应的元素,而dict使用key,当key不存在的时候,使用该key可能出现错误,因此:要避免 KeyError 发生,有两个办法:

一是先判断一下 key 是否存在,用 in 操作符:

if 'Paul' in d:

print d['Paul']

如果 'Paul' 不存在,if语句判断为False,自然不会执行 print d['Paul'] ,从而避免了错误。

二是使用dict本身提供的一个 get 方法,在Key不存在的时候,返回None:

>>> print d.get('Bart')

59

1. dict中的key不能重复,且dict中的存储的对应值没有顺序,打印出的东西可能是无序的

2. dict的更新:使用d[‘paul']=72求解

3. dict遍历:

d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }

>>> for key in d:

... print key

遍历只能获得key的值,需要通过key值获得对应的value

 

4 set:集合

无序但是所有元素唯一,不重复

a.定义:s = set(['A', 'B', 'C']),查看 set 的内容:

>>> print s

set(['A', 'C', 'B'])

可以用in来判断是否存在于集合中

b.遍历

s = set([('Adam', 95), ('Lisa', 85), ('Bart', 59)])

for x in s:

print x[0]+':',x[1]

c.添加元素到集合中

s.add(4)

d.删除元素

s.remove(4)若该元素不在集合中将会报错

 

二.Unicode编码

Python在后来添加了对Unicode的支持,以Unicode表示的字符串用u'...'表示,比如:

print u'中文'

注意: 不加 u ,中文就不能正常显示中文。

1. 转义形式: u'中文\n日文\n韩文'

2. 输出多行:

u'''第一行

第二行'''

 

3.多行编辑+raw方法使用:

ur'''Python的Unicode字符串支持"中文",

"日文",

"韩文"等多种语言'''

1)如果中文字符串在Python环境下遇到 UnicodeDecodeError,这是因为.py文件保存的格式有问题。可以在第一行添加注释

# -*- coding: utf-8 -*-

目的是告诉Python解释器,用UTF-8编码读取源代码。然后用Notepad++ 另存为, 并选择UTF-8格式保存。

2)raw的作用

如果一个字符串包含很多需要转义的字符,对每一个字符都进行转义会很麻烦。为了避免这种情况,我们可以在字符串前面加个前缀 r ,表示这是一个“raw”字符串,里面的字符就不需要转义了。例如:

r'\(~_~)/ \(~_~)/'

但是r'...'表示法不能表示多行字符串,也不能表示包含'和 "的字符串,如果要表示多行字符串。