字符串类型
字符串可以使用多种语法表示:
# 单引号
' string '
# 双引号
" string "
# 省略转义符\
r' string '
# 多行字符
''' string
string '''
# 字符串拼接
print('string1' + 'string2')
python支持中文字符串,使用语法:
u'中文\n'
ur'中文'
u'''中文
中文'''
当python编译中文字符串出错时,可能是因为python代码保存编码格式错误,可以在文件首行添加:
# -*- coding: utf-8 -*-
字符串可以通过%和%s进行格式化:
string = ['the age of %s is %s' % (name, age)]
Bool类型
取值True/False
,并将0 ' ' None
视为False
,将其他数值和非空字符串视为True
。
运算符号:
- 与--and
- 或--or
- 非--not
集合类型
list列表类型
list中的元素类型不要求是同一种数据类型,表示为:
# 空列表
list = []
# 多元素列表
list = ['ylonge', 100, true]
list元素索引
list列表变量的元素通过编号索引,表示为:
# 正序索引的编号从0开始
list[0]
# 倒序索引的编号从-1开始
list[-1]
向list中附加和插入元素
元素添加的语法:
#在list尾部附加新元素
list.append(elem)
#在list中idx编号位置插入新元素
list.insert(idx, 'paul')
删除list中元素
# 删除list末尾元素并输出该元素
list.pop()
# 删除idx编号位置的元素并输出该元素
list.pop(2)
替换list中元素
# 直接对idx位置元素赋值以完成替换
list[idx] = 'yu'
tuple类型
tuple类型变量存储列表元素,与list不同的是,tuple变量经初始化后不能修改元素,只能访问元素:
# 空tuple
tuple = ()
# 单元素,为了避免圆括号被视为算术符号,多加一个逗号
tuple = (1,)
# 多元素tuple
tuple = ('yu', 'li', 200)
尽管tuple指向的元素不可变,但是被指向的元素指向的内容是可变的,类似于指针本身不可变,但是指针指向的元素是可变的。
dict查找表
dict变量可以建立索引key和索引值value,表示为:
dict = {
# 通过key:value建立索引关系
'key1' : val1,
'key2' : val2,
'key3' : val3
}
dict有几个特点:
- dict的优点是元素索引速度快,缺点是占用内存大;list的优点是占用内存小,元素索引速度慢。
- dict存储的元素是无序的。
- dict的key不能重复且值不可变。
访问dict元素
# 通过key访问value
if 'key1' in dict :
print(dict['key1'])
# 通过get(key)访问value,如果key不存在,get()返回None
print( dict.get('key2') )
# 通过for循环遍历key
for key in dict :
print key
添加或修改dict元素
# 如果key不存在,则添加元素
dict['key4'] = val4
# 如果key存在,则修改value
dict['key2'] = val5
set类型
set记录一组不重复且无序的元素,表示为:
st = set(['a', 'b', 'c'])
set类型变量的特点:
- 当set被赋予重复元素时,set会自动删除重复元素。
- set中的元素不能被索引访问,可以通过in检查元素是否存在;但是可以通过遍历访问,不过元素的顺序是不固定的。
- set中元素的索引速度快。
- set中元素不可变。
- set中元素是无序存储的。
- set可以用于检查变量取值范围的查表验证。
更新set
set中的元素不能被修改,但是可以删除元素或增加元素。
# 使用add()添加元素,但set会自动忽略已有元素
st.add('d')
# 使用remove()删除元素,如果元素不存在,则报错。
st.remove('d')
## len访问集合长度
```python
len(list)
len(tuple)
len(dict)
集合的切片功能
当获取list\tuple\string的部分连续元素时,可以使用slice切片的方法,类似于matlab的数组操作:
L = [1,2,3,4]
# 取编号为a~b的元素,要求a < b,无论正负
L[a:(b+1)] # 编号为b+1的元素不被获取
L[:(b+1)] # 当a=0时,可以省略起始项
# 取从头到尾的元素
L[:]
# 从a~b隔s个元素取一个元素
L[a:(b+1):s]
切片操作会将元素拷贝到新的list\tuple中。