列表
可动态伸缩,支持加法(拼接)和乘法(复制)运算
下标从0开始,可以为负数(从右到左,最右边是-1)
切片操作
[begin:end:step],切片是左闭右开的半开区间,不包含右边界,begin、end都是下标,可以为负数,step代表步幅和方向,对下表无要求(无效也不会报错)
常用操作
append、extend、del
enumerate(iter):遍历列表时打印下表
len
reversed
sorted
按绝对值大小排序
sum
列表解析
filter(fun,list)
根据fun(x)返回True、False对列表中元素进行过滤操作
map(fun,list)
用fun(x)作用于列表中的每一个元素,返回结果封装成一个列表
生成器表达式
生成器是迭代的生成结果,而不是立刻对表达式求值(列表解析),所以比列表解析快,得到的是生成器对象,而不是列表,不能用索引、append等列表操作,可以用list()工厂函数转换为列表对象
元组
元组不可修改,但元组里的列表可以修改
字符串
字符串也是个列表,内容不能修改,支持加法和乘法,.join方法
' '.join(x)表示把x的每一个字符串用空格拼接
编码问题
原因是控制台编码是gbk,而pycharm是utf-8。
字典
遍历、get、setdefault、update、clear
C++
x = {'name':'小明','age':19}
print(x)
print(x['name'])
print('name1' in x)
#遍历字典
for key,value in x.items():
print(key,'=',value)
#get若不存在key,则返回自定义的一个字符串
print(x.get('name1','not exist'))
#setdefault(k,v):如果存在key,则返回其value,否则添加k-v并返回v
x.setdefault('age',88)
print(x)
x.setdefault('爱好','打球')
print(x)
#m.update(b) 将b中所有对象加到m
y={'学校':'hbut'}
x.update(y)
print(x)
#clear()删除字典的所有成员
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
x={'name':'小明','age':19}
print(x)
print(x['name'])
print('name1'inx)
#遍历字典
forkey,valueinx.items():
print(key,'=',value)
#get若不存在key,则返回自定义的一个字符串
print(x.get('name1','not exist'))
#setdefault(k,v):如果存在key,则返回其value,否则添加k-v并返回v
x.setdefault('age',88)
print(x)
x.setdefault('爱好','打球')
print(x)
#m.update(b) 将b中所有对象加到m
y={'学校':'hbut'}
x.update(y)
print(x)
#clear()删除字典的所有成员
集合
集合是无序的,元素不重复,集合里的元素是不可变的(能够hash的),不支持索引和切片操作
set 可变集合
frozenset 不可变集合
集合运算:s|t:并集;s&t:交集;s-t:差集;s^t:对称差集;s|=t:把t的元素并入s;st:s是否为t的超集;s.isdisjoint(t):s和t是否有交集
交、并、差集的操作结果和最左边的操作数有相同的类型,比如左边是可变集合,右边是不可变,运算后是可变
a=set(range(1,11))
可变集合set特有的方法
s.add(item);s.clear();s.discard(item),如果item不存在,那么抛出异常,而s.remove(item)不会抛异常
s.update(t):没有的追加进来,有的不进来。
s.difference_update(t):从s中删除和t交集的部分