计划用国庆假期把这本书给刷了
前言:
编程简单,清晰易懂,简洁的代码
感兴趣的趣味项目(对近期工作可能有帮助):
1. 自动添加标签
第一章节:基础知识
计算机编程就是告诉计算机如何做事;算法 --> 流程、菜谱、操作
将python当做计算器来使用
进制(工作不常用):
0xAF=175
010=8
获取用户输入(不常用交互):input("The meaning of work: ")
使用函数:**调用**函数 --> 向函数提供**实参**。
模块:能力的扩展
单引号和双引号字符串没有区别。 -->必要时使用转义字符、长字符串、原始字符串
repr和str的区别:
长字符串:''' ''', """ """
原始字符串:r"\nhello" 一些例外如引号:print(r'Let\'s go!')
原始字符串不能以单个反斜杠结尾
变长编码:不怎么用,日后有需要再看
章节总结:
-
程序告诉电脑如何做事,算法是做事的菜谱,数据是做菜的食材
-
表达式,运算符,函数,变量
-
变量赋值语句
-
语句:一种动作
-
函数:对多个语句的封装,组合技,连续动作的组合
-
模块:扩展功能,工具包
-
字符串基本操作
第二章节:列表和元组
常用数据结构
元组不可修改,但数组可以
元组可以用作字典键值(不常用)
容器:可以包含对象的对象。常见的容器:序列(列表、元组)和映射(字典)
常见操作:索引,切片,相加,相乘,成员资格检查,迭代
索引:
-1是最后一个元素
切片:
第一个索引是包含的第一个元素的编号,但第二个索引是切片后余下的第一个元素的编号。
可以使用负数索引
切片的步长:
使用in来检查特定的值是否在序列中
len,min,max(需要搭配比较运算符)
列表转型:list(..)
给元素赋值、删除元素、给切片赋值以及使用列表的方法
del:删除元素,同时会改变列表长度。
给切片赋值 -> 可以将切片的长度改变,或者实现插入新元素/删除切片的功能:
列表方法:
append,在末尾添加
clear清空列表
copy:列表的深拷贝:
count:计算指定元素的出现频率
extend:序列的扩展。例如,用一个列表来扩展另一个列表。和拼接的区别是,拼接的结果是一个全新的序列,而扩展是修改原有的序列。
效率上,a.extend(b) 优于 a = a + b
index:元素第一次出现的位置
insert:插入元素
pop:删除元素(和append搭配使用形成一个后进先出的栈结构,和insert(0,...)搭配使用可以形成一个先进先出的队列。更好的方式:使用collections中的deque。)
remove:删除指定值的元素(第一个)
reverse:倒序。注意返回的是一个迭代器,如果要返回列表:list(reversed(x))
sort:**就地**排序。也就是说,不会返回一个新的排序后列表副本。如果不想改原来的序列,可以结合copy使用。
另一个函数:y=sorted(x)
sort的高级用法:
①比较参数:key=,传入一个函数对象作为key,用于比大小,可以实现定制化的cmp。
②反序:reverse=True
元组:不可修改
单个元素的元组:(42, )
转型:tuple()
本章小结:
1. 序列是一种数据结构,包括列表和元组。
2. 可以索引和切片来访问序列片段。
3. 列表可以为索引和切片赋值。
4. 可用in来查找特定值是否在序列里,或者字符串是否包含子串。
第三章节:使用字符串
字符串是常量序列
将值转换成字符串,并设置格式字符串,在工作中非常重要和常见。
示例:
>>> format = "Hello, %s. %s enough for ya?"
>>> values = ('world', 'Hot')
>>> format % values
'Hello, world. Hot enough for ya?'
转换说明符:
%s:s是字符串,如值不是字符串,会强制转型。
$.3f:包含3位小数的浮点数。
模版字符串:有点邪教,不是很想学。
推荐方法:使用format:
>>> "{}, {} and {}".format("first", "second", "third")
'first, second and third'
>>> "{0}, {1} and {2}".format("first", "second", "third")
'first, second and third'
然而,索引无需像上面这样按顺序排列。
>>> "{3} {0} {2} {1} {3} {0}".format("be", "not", "or", "to")
'to be or not to be'
命名字段的工作原理与你预期的完全相同。
>>> from math import pi
>>> "{name} is approximately {value:.2f}.".format(value=pi, name="π")
'π is approximately 3.14.'
当然,关键字参数的排列顺序无关紧要。
{value:.2f}:可以指定了格式说明符.2f,并使用冒号将其与字段名隔开。它意味着要使用包含2位小数的浮点数格式。
如果没有指定.2f,结果将如下:
>>> "{name} is approximately {value}.".format(value=pi, name="π")
'π is approximately 3.141592653589793.'
f字符串是一种更简洁的表达:
>>> from math import e
>>> f"Euler's constant is roughly {e}."
"Euler's constant is roughly 2.718281828459045."
要在最终结果中包含花括号,可在格式字符串中使用两个花括号(即{{或}})来指定。
>>> "{{ceci n'est pas une replacement field}}".format()
"{ceci n'est pas une replacement field}"
3.3有点冗长不太想看,跳过了
3.4字符串方法:
center:指定长度并居中
find:查找子串,返回索引或-1(没找到);rfind,index,rindex,count,startswith,endswith
join:和split相反,用于以指定的连接符,合并序列的元素,返回字符串。
lower:小写;title,super
replace:替换字符串,返回替换后结果
split:拆分字符串,得到序列
strip:将字符串开头和末尾的空白删除,返回删除后结果
isxxxx:字符串是否满足特定的条件,等等,日后有用到再查pydoc好了。
本章小结:
字符串%.3d用来约束小数点后有效数字。
字符串具有很多实用的方法。
附:查了一下,发现原本以为有用的趣味编程好像并不一定有用。再看看吧。
第四章节:字典
字典是映射的容器
d[k] = v赋值
字典中如果key不存在的话会创建一个新的项
k in dict的时候,查找的是key是否存在而不是value是否存在
格式化字符串用于字典:
clear的用法:
注意:拷贝与深拷贝:
fromkeys:保留字典的key,但创建全新的空字典,value=None
get可以在访问不存在的key时不会引发异常:
字典视图:
items:把字典中所有元素汇总成一个列表,格式为(key,value),排序不确定。
keys:返回所有的key
values:返回所有的value
pop:拿到指定的key对应的value,并删除该键值对
popitem:随机pop一个键值对
setdefault:当key不存在时,设置默认值。
update:用一个字典的已有键值对,来刷新另一个字典的键值对
本章小结:
python的映射是字典。key不重复。key不存在时会新增一次录入。
format_map用于在字符串格式中利用字典。
字典方法需要注意拷贝和深拷贝的使用。
以上是一些基础的内置类型,以及对基本的表达式有了认识。后续有语句,流程体,以及面向对象抽象、高级数据结构,等,另开一篇笔记。