一.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'...'表示法不能表示多行字符串,也不能表示包含'和 "的字符串,如果要表示多行字符串。