数据结构的优缺点:
列表:
优点:可以动态添加删除更改元素,是一个有序的集合(容器/序列),不同的数据类型可以混合存储在同一个列表当中
缺点:会导致数据存储不紧凑,整个结构占用很多空间,在多维列表中,当其中一个值被修改,所有的都会变
元组:
优点:可以存储不同数据类型的数据,
缺点:不可以可以动态添加删除更改元素,很多时候可以作为常量使用,防止被篡改
字典:
优点:可以高效的查找,插入,删除任何与给定键关联的对象,key唯一,v对应各种数据类型
缺点:空间换时间,占用内存比较大
集合:
优点:元素唯一性
缺点:放入的元素只能是不可变类型
| 运算符 | 描述 |
| ** | 指数(最高优先级) |
| ~ + - | 按位翻转,一元加号和减号(最后两个方法名为+@和-@) |
| * / % // | 乘,除,求余数和取整数 |
| + - | 加法减法 |
| >> << | 右移,左移运算符 |
| & | 位‘AND’ |
| ^ | | 位运算符 |
| <= < > >= | 比较运算符 |
| == != | 等于运算符 |
| = %= /= -= += *= **= | 赋值运算符 |
| is is not | 身份运算符 |
in not in 成员运算符
not and or 逻辑运算符
列表:
>>> num = [1,2,3,4,5] >>> num [1,2,3,4,5]
元组:
>>> tuple = (1,2,3) >>> tuple (1,2,3)
字典:
>>> dict ={'tom':20,'jack':21,'lily':22}
>>> dict
{'tom':20,'jack':21,'lily':22}
集合:
>>> type(set())>>> set([1,2,3,1]) {1,2,3} >>> {1,2,3,1} {1,2,3} >>> type({}) 空集合只能用set()函数来创建,空的大括号{}创建的是一个字典
集合常见的方法:
| 方法 | 功能描述 |
| add() | 为集合添加元素 |
| clear() | 移除集合中的所有元素 |
| copy() | 拷贝一个集合 |
| difference() | 返回多个集合的差集 |
| difference_update() | 移除集合中的元素,该元素在指定的集合也存在 |
| discard() | 删除集合中指定的元素 |
| intersection() | 返回集合的交集 |
| intersection_update() | 返回集合的交集 |
| isdisjoint() | 判断两个集合是否包含相同的元素,没有返回True,否则返回False |
| issubset() | 判断指定集合是否为该方法参数集合的子集 |
| issuperset() | 判断该方法的参数集合是否为指定集合的子集 |
| pop() | 随机移除元素 |
| remove() | 移除指定元素 |
| symmetric_difference() | 返回两个集合中不重复的元素集合 |
| symmetric_difference_update() | 移除当前集合中在另一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到集合中 |
| union() | 返回两个集合的并集 |
| update() | 给集合添加元素 |
不可变与可变类型:
1.一切皆对象,一切皆为对象的引用
2.可变数据类型有:字典,列表,集合等
不可变数据类型有:int ,字符串 ,float ,数值型 ,元组
3.可变类型:value改变,id不变
不可变类型:value改变,id的值也随着改变
4.可变对象:对象的内容可变
不可变对象:对象的内容不可变
小整数的范围是【-5,256】
小整数对象池:整数在程序中的使用非常广泛,python为了优化速度,使用了小整数对象池,
避免为整数频繁申请和销毁内存空间
is 是判断两个变量是不是同一个对象:
>>> x=500 >>> id(x) 1900554698416 >>> y=x >>> id(y) 1900554698416 >>> x is y True >>> y='foo' >>> id(y) 1900553032048 >>> x is y False
绝对值的计算:abs()函数:
>>> abs(-12) 12 >>> abs(3+4j) 5.0
进制的转换:bin(),oct()和hex()函数:
>>> bin(100),oct(100),hex(100)
('0b1100100','00144','0x64')
chr()和ord()函数:
>>> chr(78)
'N'
>>> ord('N')
78
商和余数: divmod()函数:
>>> divmod(13,6) (2,1) >>> divmod(2.3,0.4) (5.0,0.2999999999999997)
幂的计算:pow()
>>> pow(2,5) 32 >>> pow(2,5,10) 2
近似值的运算:round()
>>> round(3.1415926) 3 >>> round(3.1415926,2) 3.14 >>> round(0.5) 0 >>> round(-0.5) 0 >>> round(3.255,2) 3.25
序列的真假判断:all(),any()
>>> all(["abc",1, 2.3,[1,2,3]])
True
>>> any([" ",0, [], False,{1,2}])
True
迭代:range()
>>> range(10)
range(0,10)
>>>list(range(10))
[0,1,2,3,4,5,6,7,8,9]
>>> for i,c in enumerate('abc'):
print(i,c)
0 a
1 b
2 c
>>> for i,c in zip('123','abc')
print(i,c)
1 a
2 b
3 c
最值:max()和min():
>>> max([1,2,3]) 3 >>> min([1,2,3]) 1
切片:slice()
>>> slice(5,10,2)
slice(5,10,2)
>>> range(20)[slice(5,10,2)]
range(5,10,2)
>>> for i in range(20)[slice(5,10,2)]
print(i)
5
7
9
排序:sorted()与reversed()
>>> sorted([5,3,12,7]) [3,5,7,12] >>> reversed([1,2,3,4,5])
求和:sum()
>>> sum([1,2,3,4]) 10
内置函数:
类型判断:isinstance()
>>> a[1,2,3] >>>isinstance(a,list) True >>>isinstance(a,dict) False
isinstance和type的区别:
type:不会认为子类是父类类型,不考虑继承关系
isinstance:会认为子类是父类类型,考虑继承关系
类型转换:
>>> int(12.4)
12
>>> int(-23.2)
-23
>>> float(1)
1.0
>>> complex(1)
(1+0j)
>>> str(1.2+3.4)
'4.6'
>>> repr(1.2+3.4)
'4.6'
>>> repr('abc')
"'abc'"
>>> str('abc')
'abc'
>>> repr('abc')=='abc'
False
>>> str('abc')=='abc'
True
>>> str(255),hex(255),oct(255),bin(255)
('255','0xff','0o377','0b11111111')
>>> int('23')
23
>>> int('FF',16)
255
>>> int('234',8)
156
>>> int('0b101111',2)
47
>>> x=5
>>> '{0}*{0}*{0} is {1}'.format(x,x**3)
'5*5*5 is 125'
>>> float('2.3')
2.3
>>> ord('a')
97
>>> chr(97)
'a'



