博主之前学过一点的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,用起来有些吃力,有些地方排版也不是很好,我相信未来会更好