博主之前学过一点的python,但缺少实际操作,记忆并不牢固。
最近在MOOC又过了一遍python的基础知识,决心从零开始,为将来的数据分析和机器学习打牢基础。
先从最基础的数据类型开始,主要是各种数据类型元素的限制和函数的使用规则,细节可能无用,也可能有用。
列表 list
属性 | 列表 list 示例: list = [1,2,3,4,5] list[1] = 2 |
元素 | 从数值、字符串到 list、tuple等等均可 |
是否可变 | 是 |
增加元素 | list.append(obj) 在末尾添加元素 list.extend(seq) 在结尾用序列添加多个元素 list.insert(index , obj) 在指定位置添加元素 |
删除元素 | list.pop(index) 删除指定位置的元素,并且返回该元素的值 index默认为-1 list.remove(obj) 移除列表中某个值的第一个匹配项 list.clear() 清空列表 del list[index] 删除指定位置的元素 |
排序 | list.reverse() 将list中的所有元素前后颠倒 list.sort() 对列表进行排序 |
索引 | list[int] int可正可负,但不可以越界 list.index(obj) 返回某个值的索引值,即它在list中的位置 |
切片 | list[a:b] 截取从位置a开始到位置b之前的元素(不包含位置b) [a,b) 左闭右开 注意:list中的元素从位置0开始,从左往右; 也可以从-1开始,即从右往左 a或b可以不填,意味着从左端或右端到某一个位置 |
其他函数 | len(list) 返回 list 的长度 max(list) or min(list) 返回list的最大值或最小值 list(tup) 用元组生成新的 list(返回值为 list,并不会改变原有的元组) cmp(list1,list2) 用来比较两个列表的大小,但在python3.X版本中已经删除 推荐直接使用 list1>list2,这样的判断符。 要注意数值类型 |
补充一点,sorted(list)不改变list本体,而是返回排序后的 list,可以将返回值赋给一个新的变量进行使用.
而reversed(list)不返回任何值
元组 tuple
示例 tuple = (1,2,3,‘abc’)
为了方便理解元组,我们先将元组视为把[ ]换为()的列表,两者可以执行的操作完全一样。
元组相比于列表,除了[ ]变为( )以外,最大的不同在于元组的不可变性。
即元组在初始化之后,不能对其中的元素进行更改。也就是说少了删除元素、排序的功能,具体表现为:
- 不能通过索引改变元组中的数值。
例如:a=(1,2,3) 执行赋值语句 a[2]=10 就会报错
准确理解不可变性,还需注意如下情况:
- 当元组中的元素为 列表list 的时候,列表的值改变,会导致元组本身的改变。
如下图所示,随着list t的改变,x也发生了改变 - 如何理解这种情况?
tuple不变指的是它的指向该list的位置不变,至于list变成何值,如何变动都与它无关 - 元组仍然可以通过 + 和 * 进行扩展
字典 dict
属性 | 字典 dict 示例:dict = { ‘name’ : “张三” , ‘age’ : 18} |
元素 | 键 key 必须是不可变类型,即数值、字符串、元组。键一般是唯一的,如果重复最后的一个键值会替换前面的 值 value 任何数据类型 |
查看key,value | dict.keys() 所有的键 dict.value() 所有的值 dict.items() 以元组(键,值)的形式返回所有内容 |
访问 | dict [key] 返回键所对应的值。如果没有该键,则报错 dict.get(key) 同上,不存在则返回default值 dict[key]=value 键若不存在,则自动生成新的键,值为value;否则,替换原值 |
修改 | dict.fromkeys((keys),value) 生成包含了一或多个键且对应值均为value的字典(覆盖原内容),如果value不填则默认为None dict.update(dict2) 在字典dict中加入字典dict2的内容. dict.update(key=value) 在字典中加入键为key,值为value。 注意key不需要加引号 |
删除 | del dict[key] 删除该键所在数据项 dict.pop() 删除并返回值 dict.popitem() 删除并返回字典中最后一对键和值 dict.clear() 清空 |
其他函数 | dict.has_key(key) 查找是否有这个键 |
集合
set就像是把dict中的key抽出来了一样,类似于一个List,但是内容又不能重复,
set中不能加入可变类型数据(不能加入含有list的元组)
属性 | 集合set | 示例: set = {‘a’,‘b’,‘c’} |
元素 | 非可变类型数据 | 数值、字符串、元组 |
创建 | set()方法 | a=set() 创建空集合 a=set(list) 从序列转换生成集合 |
增长集合 | set.add(item) set.update(list) | 增加一个数据 批量增加数据 |
删除 | set.remove/discard() set.pop() set.clear() | 删除指定数据,在没有该数据的时候remove会报错,discard不会 删除任意数据并返回值 清空 |
集合运算 | 并 a | b 交 a & b 差 a - b 对称差 a ^ b | 对称差:a | b – a & b |
关系判定 | <,<=,=,>,>= | 子集、真子集、超集、真超集 |
集合可以用来:
快速去除重复的项。
判断元素是否在一组数据中,如果顺序不重要,使用集合可以获得比列表更好的性能
小结
一些相通点:
- list,tuple,dict,set 均可由 in 用于逻辑判断、循环语句
- 都有clear,pop,remove删除方式,且逻辑类似
参考资料
[1]: [Python 菜鸟教程](https://www.runoob.com/python/python-tuples.html)
第一次写博客,第一次接触Markdown,用起来有些吃力,有些地方排版也不是很好,我相信未来会更好