Python3六种标准的数据类型:Number(数字),String(字符串),List(列表),Tuple(元组),Sets(集合),Dictionary(字典)

1 数字

1.1:整型(int)

  Python3没有限制整型大小,可以当Python2的long使用

  整数除法中,除法(/)计算结果是浮点数,即使可以整除也是如此,如果想要得到整数结果,丢弃小数部分,可以使用地板除(//)

1.2浮点型(float)

  浮点型有整数部分和小数部分组成,亦可以使用科学计数法

1.3复数(complex)

  复数由实部和虚部组成,可以用a+bj或complex(a,b)表示

1.4数据类型转换

int(x),把x转换成整数
  float(x),把x转换成浮点数
  complex(x),把x转换成一个复数,实部x,虚部0
  complex(x,y),把x和y转换成一个复数,实部x,虚部y

1.5常量

  PI:数学常量π

  E:数学常量e

1.6变量

  Python中变量没有明显的变量声明,类型不是固定的,随值而变:

  

Python list内存过大_字符串

1.7 语句和表达式

  语句是Python解释器可以运行的一个代码单元,可以理解为可以执行的一个命令

  表达式是值、变量和操作符的组合

  语句会造成一些改变,如赋值语句会改变变量的值,表达式最终会变为一个值,不会造成某些改变

1.8运算符和操作对象

Python 7种操作符:算术操作符、比较运算符、赋值运算符、逻辑运算符、位运算符、成员操作符、身份运算符
  1)算术操作符:
    +,-,*,/,%
    **:幂运算10**3输出1000
    //:取整除16//3输出5
  2)比较运算符:==、!=、>、<、>=、<=
  3)赋值运算符:=,+=,-=,*=,/=,%=,**=,//=
  4)位运算符:
    &,|,
    ^抑或:相同位相同为0,相反为1,
    ~取反,<<,>>
  5)逻辑运算符
  and,布尔与,如果x为False,x and y就返回False,否则返回y的计算值

  

Python list内存过大_Python list内存过大_02

  or,布尔或,如果x非0,x or y就返回x的值,否则返回y的值

  

Python list内存过大_Python list内存过大_03

  not,布尔非,如果x为True,not x返回False,如果x为False,返回True

  

Python list内存过大_元组_04

  6)成员运算符

  in 如果在指定序列中找到值,返回True,否则返回false;not in 与in相反

  

Python list内存过大_元组_05

  7)身份运算符

  is判断两个标识符是否引用自同一个对象,是返回True,不是返回False

  

Python list内存过大_元组_06

 

2 列表和元组

  Python6种基本数据结构:列表、元组、字符串、Unicode字符串、buffer对象、xrange对象

2.1 通用序列操作

  Python种所有序列可以进行一些特定的操作:索引(indexing),分片(slicing),序列相加(adding),乘法(multiplying)、成员资格、长度、最小值、最大值

2.1.1索引

  Python序列索引自左向右为正由0起,自右向左为负由-1起:

  

Python list内存过大_元组_07

  为什么自左向右不是-0起,原因在于数学上-0 = 0

2.1.2分片

  Python可以使用分片从序列中获取指定部分片段:

  语法:arr[a:b:c],表示去取索引x满足a <= x < b范围内的元素,步幅为c,abc均可以省略

  

Python list内存过大_元组_08

2.1.3序列相加

  序列可以使用+链接起来,但是要类型一致(不是元素类型哦),加法生成新的序列,不改变原序列自身

  

Python list内存过大_python_09

2.1.4乘法

  乘法可以把序列复制n遍生成新的序列

  

Python list内存过大_python_10

2.1.5成员资格

  Python用in来检测元素是否在序列中出现,出现过返回True,否则返回False

  

Python list内存过大_字符串_11

2.1.6长度、最大值、最小值

  

Python list内存过大_元组_12

2.2列表

2.2.1更新列表

  1)添加元素:arr.append(obj)

  2)删除元素:del arr[index]  

  

Python list内存过大_Python list内存过大_13

  3)分片赋值

  分片赋值可以将列表的某一判断直接替换成另一个列表,不要求被替换掉的片段长度等于新加进来的列表的长度

  

Python list内存过大_元组_14

2.2.2列表方法

1)arr.append(obj)将obj作为一个元素追加到arr队尾
  2)arr.count(obj)查询obj在arr中出现的次数
  3)arr.extend(seq)将列表seq追加到arr队尾,亦可以是seq的某一片段(如seq[:3])
  4)arr.index(obj)找出值obj在arr中第一次出现的索引
  5)arr.insert(index,obj)将obj插入到arr的index索引处
  6)arr.pop()移除并返回arr的最后一个元素,arr.pop(index)移除arr的index处的元素,两种移除会是arr长度减小的,不是空出位置哦
  7)arr.remove(obj)移除arr中第一个obj
  8)arr.reverse(),反转arr里面元素的顺序,是对arr的反转,不是返回一个新的列表
  9)arr.sort(),对arr进行默认排序
     arr.sort(func),按照指定函数给arr排序
     arr.sort(key=len,reverse=False),按照key对arr排序,reverse为是否反转
  10)arr.clear(),移除arr所有的元素
  11)arr.copy()复制arr并返回新的arr

    

Python list内存过大_字符串_15

2.3元组

  Python的元组与列表相似,但元组的元素不可以修改

  创建元组的方法:

  

Python list内存过大_python_16

       

Python list内存过大_python_17

2.3.1tuple函数

  tuple函数可以将列表转换为元组,也可以将字符串转换为元组,或返回传入的元组

  

Python list内存过大_python_18

2.3.2tuple基本操作

  1)访问元组

  元组内的元素可以用index访问,元组可以进行分片操作

  

Python list内存过大_python_19

  2)修改元组

  元组内元素不可以修改,但是可以将两个元组进行连接操作

  

Python list内存过大_Python list内存过大_20

  元组不可以修改,但元组内元素的属性可以修改,故元组的不可变指的是元组内每一个元素的指向不可变

  

Python list内存过大_数据结构与算法_21

 

  3)删除元组

  元组内元素不可以删除,但是可以删除整个元组

  

Python list内存过大_字符串_22

2.3.3元组内置函数

1)len(tuple)获取元组长度
  2)max(tuple)、min(tuple)获取最大值最小值
  3)tuple(seq)将列表转换为元组

 3字符串

3.1字符串格式化

3.1.1使用占位符格式化字符串

  在字符串内预先设好占位符,在使用时替换

    

Python list内存过大_元组_23

  语法解释:%左边是待格式化的字符串,右边是参数,参数可以直接是值,亦可以使用元组或字典,占位符替换时有类型检测

  常用占位符:

%s:字符串
  %d:整数
  %f:浮点数

  有些时候%要特殊处理输出%:

   

Python list内存过大_python_24

  格式化浮点数占位符中可以添加字符串宽度和小数位数,格式%a.bf,a为宽度,b为小数位,如果a大于真实宽度,左边以空格补上,用精度b时左边‘.’必须要有,a和b可以用*代替然后在元组中读取

  

Python list内存过大_元组_25

  符合、对齐和填充:

  

Python list内存过大_元组_26

  如上,输出结果中数字前多了一堆0,称之为标表。在这段宽度之前放置一个标表,可以是0、加号、减号、空格

  0表示用0填充,减号(-)表示左对齐,空格表示数值前用空格填充,加号(+)表示无论正数还是负数都展示出符号:

  

Python list内存过大_Python list内存过大_27

 3.2字符串方法

  1)str.find(sbustr,beg,end),从字符串str的beg到end索引位置查找子串sbustr,有就返回第一个索引位置,没有返回-1,

  

Python list内存过大_Python list内存过大_28

  2)mark.join(sequence),使用mark链接字符串序列sequence,生成一个字符串

  

Python list内存过大_字符串_29

  2)upper()所有小写变大写,lower()所有大写变小写,swapcase()大小写互换,均返回新字符串不改变原字符串

  

Python list内存过大_数据结构与算法_30

  3)str.replace(old,new,time),将str中的old子串替换成new子串,最多替换time处,time可以省略,返回新字符串,不改变原字符串

  

Python list内存过大_字符串_31

  4)str.split(sbstr,num),将字符串str以sbstr进行分割成列表,最多分num次(生成num+1长度列表),sbstr可以没有,默认为空格,num可以不带

  

Python list内存过大_字符串_32

  5)translate(table)方法,根据table替换字符,table中有两个长度对应的字符串

  

Python list内存过大_数据结构与算法_33

  替换逻辑如下: 

 

Python list内存过大_元组_34

 4字典

   字典是Python唯一内建的映射类型,字典指定值没有特定的顺序,都存在键key里,键可以是数字、字符串、或元组

  创建字典:d = {key1:value1,key2:value2...}

  字典中键是唯一的,值不必唯一,键必须是不可变的,如字符串、数字、元组

  dict函数可以将其他映射或键值序列创建为字典:

  

Python list内存过大_字符串_35

 

修改字典:dic[key] = value;
  删除字典某个key与对应值: del dic[key]
  删除整个字典: del dic
  获取字典长度:len(dic)
  dict和list的区别:
  dict:1)插入和查找速度极快,不会因为key的增多而变慢;2)需要占用大量内存,内存浪费多
  list:1)查找和插入随元素的增多而变慢;2)浪费内存很少

4.1字典方法

1)dict.clear()清除所有元素
  2)dict.copy()浅复制
  3)dict.fromkeys(seq[,value),以序列seq作为键创建一个新的序列,value作为所有键的初始值
  4)dict.get(key[,default]),根据键获取值,没有返回default值
  5)key in dict,查找dict是否有键key,有返回true
  6)dict.items()返回(键,值)元组数组
  7)dict.keys()返回所有键
  8)dict.setdefault(key,default)返回key对应的值,如果没有,则将default设置为key的值
  9)dict1.update(dict2)将dict2中的键值对更新到dict1中
  10)dict.values()以列表的形式返回所有的值