fluent python-chap2
1. 内置序列类型
容器序列: list tuple collections.deque 可以存放不同类型的数据。 存放的是它们所包含的任意类型的对象的引用。
扁平序列: str bytes bytearray memoryview array.array 只能容纳一种类型,存放的是值而不是引用,是一段连续的内存空间,更加紧凑。
PS.此处我还没找到方法,就是怎么验证扁平序列是一段连续的内存空间。
列表推导式,尽量简单,代码不超过两行,python会忽略[],{},()内的续行符,因此可省略续行符\。
元组拆封,使得元组可以完美地被当作记录来使用。
具名元组namedtuple构建带字段名的元组和一个有名字的类,但是python并不会用__dict__来存放,这使得其内存消耗和元组是一样的。
列表没办法想numpy的数组那样,直接乘一个数,放大多少倍,可以用列表推导式。
1 2 3 4 5 6 | test_str = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 ] test_str1 = test_str * 2 print (test_str1) test_str = [i * 2 for i in test_str] print (test_str)<br> |
1 2 3 4 5 | # healthy board = [[ '_' ] * 3 for i in range ( 3 )] # unhealthy w_board = [[ '_' ] * 3 ] * 3 |
比较有趣的地方,两个id一样:
1 2 3 4 5 | l = [ 1 , 2 , 3 ] print ( id (l)) l * = 2 print ( id (l)) |
array.tofile和array.fromfile比文本文件读取速度快60倍,占用的字节数也比文本文件少一个数量级。
1 2 3 4 5 6 7 8 9 10 11 | from array import array from random import random floats = array( 'd' ,(random() for i in range ( 10 * * 7 ))) fp = open ( 'floats.bin' , 'wb' ) floats.tofile(fp) fp.close() floats2 = array( 'd' ) fp = open ( 'floats.bin' , 'rb' ) floats2.fromfile(fp, 10 * * 7 ) fp.close() print (floats = = floats2) |
memoryview没太看懂……
sort,sorted,以及max, min函数有key参数,这个很有意思。
1 2 3 4 5 6 7 | ll = [ 32 , 28 , '11' , '9' , 19 , 20 , 5 ] # sort as str lt = sorted (ll,key = str ) print (lt) # sort as int lt2 = sorted (ll,key = int ) print (lt2) |
Sophie的世界,转载请注明出处,谢谢。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人