Python3学习笔记 | 十、Python的类型与运算-其他
- 2019 年 10 月 6 日
- 筆記
一、内容分类

二、set
1、集合
集合的元素可以是不可变对象:数字、字符串、元祖、frozenset。集合里的元素是不重复的。
空集合:
>>> dora = set() >>> type(dora) <class 'set'>
Python 2.x 里现实方式是set(列表)方式。
>>> dora set([])
Python 3.x 里,空的时候是set(),有元素跟字典差不多,但不是键:值方式。
>>> dora set() >>> dora = {'Emon'} >>> dora {'Emon'}
2、集合的方法

三、bytearray 类型
在Python2.x里默认字符串可以认为是在python3.x里的byte类型,在python3.x里默认类型是unicode。字符串类型是不可变的,但在python3.x里支持可变字符串:bytearray类型。
>>> a = bytearray('你好',encoding='utf-8') bytearray(b'xe5xbdxa0xe5xa5xbd') >>> a[0] 228 >>> a[0]=229 >>> a.decode('utf-8') '彠好' >>> a.find('好'.encode('utf-8')) 3
四、对象灵活性
像列表,字典,元祖里的元素可以包涵任何对象,可以任意嵌套。列表和字典是任意变长的。 比如:一个列表如下:
>>> List1 [{'dict': ['dict1', 'dict2']}, 'List2', (['list3-1', 'list3-2'], 'list3-3'), ['list4']]

五、引用与复制
>>> a = [1,2,3] >>> b = ['a',a,'b'] >>> b ['a', [1, 2, 3], 'b'] >>> a[0] = 4 >>> a [4, 2, 3] >>> b ['a', [4, 2, 3], 'b']
这个时候发现,结果可能与想象的不一样。当我们需要的是复制a的值而不是引用:
>>> a = [1,2,3] >>> b = ['a',a,'b'] >>> c=['a',a[:],'b'] >>> a[0] = 4 >>> a [4, 2, 3] >>> b ['a', [4, 2, 3], 'b'] >>> c ['a', [1, 2, 3], 'b']
具体原理图如下:

六、比较 - 内容相等,对象相等
>>> a = 1 >>> b = 1 >>> a == b True >>> a is b True >>> a = [1,2,3] >>> b = [1,2,3] >>> a == b True >>> a is b False
创建列表,字典,元组等有多个元素的对象的时候,不会在原有对象里查找想等的,而是新创建一个,字符串有点特殊。
七、Python中的真假
数字:非0为真,0为假
其它对象:非空为真,空为假
None 为假,关于None,在Python里是独立的对象类型,只有一个值。
bool类型:
>>> bool() False >>> bool(1) True >>> bool({}) False
八、无限循环
>>> a = {'d':''} #字典 >>> a['d'] = a >>> a {'d': {...}} >>> a['d']['d']['d'] {'d': {...}} >>> l = ['L'] #列表 >>> l.append(l) >>> l ['L', [...]] >>> l[1][1][1] ['L', [...]]