Python基础:基本数据类型

 python基本标准6类数据类型:Number数字, String字符串, List列表,Tuple元组,Set集合,Dictionary字典

不可变数据3个(Number数字,String字符串,Tuple元组);可变数据3个(List列表,Dictionary字典,Set集合)

序列类型(字符串、元组、列表)

查变量类型:type()

解释:

不可变数据:

不允许变量的值发生变化,如果改变了变量的值,相当于是新建了一个对象(改变内存对象),而对于相同的值的对象,在内存中则只有一个对象,内部会有一个引用计数来记录有多少个变量引用这个对象.

可变数据:

允许变量的值发生变化,即如果对变量进行append、+=等这种操作后,只是改变了变量的值,而不会新建一个对象,变量引用的对象的地址也不会变化,不过对于相同的值的不同对象,在内存中则会存在不同的对象,即每个对象都有自己的地址,相当于内存中对于同值的对象保存了多份,这里不存在引用计数,是实实在在的对象。

(不可变数据与可变数据参考:https://blog.csdn.net/lxyhenpiaoliang/article/details/78708784

 

1.数字类型及操作:

1.1 整数类型 int

  解释:可正可负,不带小数点的数。

  范围:理论上长度是无限的(只要内存足够大)。

  整数的4类进制的表现方式:

    十进制(d):1010,99,-207

    二进制(b):以0b0B开头。例:0b010,-0b010或0B010,-0B010

    八进制(o):以0o0O开头。例:0o132,-0o123或0O132,-0O123

    十六进制(x):以0x0X开头。例:0x143,-0x143或0X143,-0X143

  

1.2 浮点类型 float

  解释:带有小数点及小数的数字

  范围:-10308 ~ 10308,精度10-16

  注意:浮点间运算存在不确定尾数。不是bug 例:0.1+0.2 = 0.30000000000000004 (因为计算机运算采用的是二进制运算,二进制表示小数时可以无限接近,但不完全相同,建议用round(x,y)函数对尾数进行处理)

  浮点类型可以用科学计数法表示;使用字母eE作为幂的符号,以10为基数,格式<a>e<b> 表示 a* 10b 例:4.3e-3 即4.3*10-3 值为:0.0004.3    

 

1.3 复数类型 complex

  解释:

  如果 x2= -1,那么 x的值什么?
  定义 j= −𝟏的平方根,以此为基础构建数学体系,a+bj(a,b均为实数)被称为复数, 其中a是实部, b是虚部,j为虚数单位

  例: z = 1.23e-4 + 5.6e + 89j    实部是:1.23e + 5.6e  用z.real 获得实部; 虚部是:89 用z.imag 获得虚部

  

 

1.4 布尔类型 bool

   解释:布尔类型只有TrueFalse两种值

  布尔类型运算:not ,and , or

NOT TRUE? OR(有一真为真) TRUE? AND(有一假为假) TRUE? NOT OR TRUE? NOT AND TRUE? != TRUE?
not False True True or False True True and False False not(True or False) False

not(True and False)

True 1!=0 True
not True False True or True True True  and True True not(True or True) False not(True and True) False 1!=1  False
    False or True True False and True False not (False or True) False not(False and True) True    
    False or False False False and False False not(False or False) True not(False and False) True    

  运算等级 not > and > or

  and 和 or 运算法则-----短路计算:

  在Python中,布尔类型还可以与其他数据类型做 and、or和not运算,请看下面的代码:

  a = True
  print a and 'a=T' or 'a=F'

  计算结果不是布尔类型,而是字符串 'a=T',这是为什么呢?

  因为Python把0空字符串''None看成 False其他数值和非空字符串都看成 True,所以:

  True and 'a=T' 计算结果是 'a=T'
  继续计算 'a=T' or 'a=F' 计算结果还是 'a=T'

  要解释上述结果,又涉及到 and 和 or 运算的一条重要法则:短路计算。

  1. 在计算 a and b 时,如果 a 是 False,则根据与运算法则,整个结果必定为 False,因此返回 a;如果 a 是 True,则整个计算结果必定取决与 b,因此返回 b。

  2. 在计算 a or b 时,如果 a 是 True,则根据或运算法则,整个计算结果必定为 True,因此返回 a;如果 a 是 False,则整个计算结果必定取决于 b,因此返回 b。

  所以Python解释器在做布尔运算时,只要能提前确定计算结果,它就不会往后算了,直接返回结果。

 

1.5 数值运算操作符

运算符 描述
+ 加  
-
*
/ 除  10/3 = 3.3333
// 整数除(相当于除法的整数部分)  10//3 = 3
% 余数(相当于除法的余数部分)  10%3 = 1
** 1.幂  x**y表示为 x的y次幂   x 等价于 pow(x,y)  2**3 = 2=8      2.当y为小数时表示开方运算 4**0.5  =40.5=2
二元操作符 (+ , - , * , /  , // , % ,** 都可以用二元操作符表示 )例1: x += 1 等同于 x = x+1 ; 例2: x **= y 等同于 x = x **y
比较符
== 等于 - 比较对象是否相等
!= 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于

 

1.6 数值运算函数

函数 描述
abs(x) 绝对值,x的绝对值。例abs(-10.01)结果为 10.01
divmod(x,y) 商余,(x//y,x%y),同时输出商和余数。例:divmod(10,3)结果为(3,1)
pow(x,y[,z]) 幂余,(x**y)%z,[..]表示参数z可以省略。例:pow(3,3,10)结果为7 等价于 pow(3,3)%10
round(x[,d]) 四舍五入,d是保留小数位数,默认值为0 例:round(-10.123,2)结果为:-10.12
max(x1,x2,...,xn) 最大值,返回x1,x2,...,xn中的最大值,n不限。例:max(1,9,5,4,5)结果为9
min(x1,x2,...,xn) 最小值,返回x1,x2,...,xn中的最小值,n不限。例:max(1,9,5,4,5)结果为1
int(x) 将x变成整数,舍弃小数部分。例:int(123.45)结果为:123;int("123")结果为123,,注意int("12.22")会报错误,要先把转成浮点,再转为整数int(float("12.22"))这样可以转,结果为12
float(x) 将x变成浮点数,增加小数部分。例:float(12)结果为:12.0;float("12")结果为:12.0
complex(x) 将x变成复数,增加虚数部分。例:complex(4)结果为: 4+0j
   
   

 

2.字符串类型及操作

2.1字符串类型的表示

  解释:字符串是由一对单引号' '或一对双引号" "表示;字符串是字符的有序序列,可以对其中的字符进行索引

  字符串的2类4种表示方法:

  由一对单引号' '或一对双引号" "表示,仅表示单行字符串。

  由一对三单引号''' '''或一对三双引号"""  """表示,可表示多行字符串。

  字符串的序号:(正向递增序号和反向递减序号)

<------------反向递减序号
-12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1
0 1 2 3 4 5 6 7 8 9 10 11
正向递增序号------------>

  字符串的使用:[]

    索引返回字符串中的单个字符串。格式<字符串>[M]  例:"请输入带有符号的温度值:"[0]  结果为:"请"

    切片返回字符串中的一串字符串。格式<字符串>[M:N] 例:"请输入带有符号的温度值:"[1:3]  结果为:"输入"

    切片高级用法:<字符串>[M:N:K] 

    根据步长K对字符串进行切片。(M缺失表示至开头,N缺失表示至结尾

    

    字符串的特殊符号:转义符(\) 例:

    转义符的一些组合

转义字符描述
\(在行尾时) 续行符
\\ 反斜杠符号
\' 单引号
\" 双引号
\a 响铃
\b 退格(Backspace)
\e 转义
\000
\n 换行(光标移动到下行首)
\v 纵向制表符
\t 横向制表符
\r 回车(光标移动到本行首)
\f 换页
\oyy 八进制数,yy代表的字符,例如:\o12代表换行
\xyy 十六进制数,yy代表的字符,例如:\x0a代表换行
\other 其它的字符以普通格式输出

 

2.2字符串操作符

操作符描述实例
+ 字符串连接 a + b 输出结果: HelloPython
* 重复输出字符串 a*2 输出结果:HelloHello
[] 通过索引获取字符串中字符 a[1] 输出结果 e
[ : ] 截取字符串中的一部分 a[1:4] 输出结果 ell
in 成员运算符 - 如果字符串中包含给定的字符返回 True 'H' in a 输出结果 False
not in 成员运算符 - 如果字符串中不包含给定的字符返回 True 'M' not in a 输出结果 True
r/R 原始字符串 - 原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。 原始字符串除在字符串的第一个引号前加上字母 r(可以大小写)以外,与普通字符串有着几乎完全相同的语法。
print( r'\n' )
print( R'\n' )
% 格式字符串 python2.6后可以用str.format()函数来增强功能

 

2.3字符串处理函数

  函数是封装了一些独立的功能,可以直接调用,python内置了许多函数,同时可以自建函数来使用。

函数及使用 描述
len(x) 转换函数:长度,返回字符串x的长度。例:len('一二三456') 结果为:6
str(x) 转换函数:任意类型X所对应的字符串形式。例:str(1.23) 结果为:"1.23"(任意类型转字符串)
hex(x)或oct(x) 转换函数:整数x的十六进制八进制小写形式的字符串。例:hex(1) 结果为:'0x1'     oct(1)结果为:'0o1' (整数转十六进制或八进制)
chr(x) 转换函数:x为Unicode编码,返回对应的字符(Unicode编码转字符) 例:chr(65) 结果为:'A'

ord(x)

转换函数:x为字符,返回Unicode编码。(字符转Unicode编码)例:ord("A") 结果为:65

 

2.4字符串处理方法

  方法:方法和函数类似,同样封装了独立的功能,但是方法是需要通过对象来调用的,表示针对这个对象要做的操作,使用时采用点方法。

    方法 特指 <a>.<b>() 风格中的函数 <b>()

    方法本身也是函数,但与 <a>(<a>是对象) 有关, <a>.<b>() 风格使用 ;

    字符串及变量也是 <a>,存在一些方法。

  常用方法:

方法及使用 描述
str.title() 首字母大写方式显示每个单词;
str.upper()

返回字符串的副本,全部大写;例:"abc".upper() 结果为:"ABC"

str.lower() 返回字符串的副本,全部小写;例:'ABC'.lower () 结果为:'abc'
str.split(sep = None)

返回一个列表,由 str 根据 sep 被分隔的部组成

'a,b,c,d'.split (',')
['a', 'b', 'c', 'd']

str.count(sub)

返回子串 sub 在str 中出现的次数
"a apple a day ".count( "a")结果为 4

str.replace (old, new) 

返回字符串 str 副本,所有 old 子串被替换为 new
" python ".replace( "n","n123.io")结果为
"python123.io "

str.center(width[,fillchar]) 字符串str根据宽度width居中,fillchar可选

"python".center(20,"*")
'*******python*******'

str.strip(chars) 从str中去掉其左侧和右侧chars中列出的字符。

'*python*'.strip ("*")
'python'

str.join(iter)

在iter变量除最后元素外每个元素后增加一个str。

','.join("abcd")
'a,b,c,d'

str.rstrip()

删除右边空格

" python  ".rstrip()
' python'

 

str.lstrip()

删除左表空格

" python ".lstrip()
'python '

 

str.strip()

 删除左右两边空格

" python ".strip()
'python'

 

      更多参考:https://www.cnblogs.com/printN/p/6924077.html

 

2.5字符串格式化

  格式化是对字符串进行格式表达的方式。

   .format()基本语法是通过 {} 和 : 来代替以前的 

  字符串格式化使用 .format()方法,如:<模板字符串 >.format(< 逗号分隔的参数 >)

  槽内部对格式化的配置方式:{<参数序号>:<格式控制标记>}

 

<填充> <对齐> <宽度> <> <.精度> <类型>
引导符号 用于填充的单个字符

< 左对齐

> 右对齐

^ 居中对齐

槽设定的输出宽度 数字的千位分分隔符

浮点数小数精度或

字符串最大输出长度

整数类型:

b(二进制),c(由Unicode编码转换单个字符),d(十进制),o(八进制),

x(十六进制),X(十六进制大写)

浮点数类型:

e,E,f,%

       

"{1:=^20}".format("python0","python1")
'======python1======='

    

"{0:,.2f}".format(12345.6789)
'12,345.68'

"{0:b},{0:c},{0:d},{0:o},{0:x},{0:X}".format(65)
'1000001,A,65,101,41,41'

     
             

3.列表类型及操作

  3.1 列表类型定义

    列表 是一种序列类型,创建后可以随意被修改

    使用方括号 []list()创建 ,元素间用逗号 , 分隔

    列表中各元素类型可以不同,无长度限制

 

  3.2  列表类型操作函数和方法

函数或方法 描述
ls[i] = x 替换列表ls第i元素为x
ls[i:j:k] = lt 用列表lt替换ls切片后所对应元素子列表
del ls[i] 删除列表ls中第i元素
del ls [i: j: k]  删除列表ls中第i到j以k为步长的元素
ls += lt 更新列表ls,将列表lt元素增加到列表ls中
ls *= n 更新列表ls,其元素重复n次
ls.append(x) 在列表ls最后增加一个元素x
ls.clear() 删除列表ls中所有元素
ls.copy() 生产一个新列表,赋值ls中所有元素
ls.insert(i,x) 在列表ls的第i位置增加元素x
ls.pop(i) 将列表ls中第i位置元素取出并删除该元素
ls.remove(x) 将列表ls中出现的第有元素x删除
ls.reverse() 将列表ls中的元素反正转

 

 

  3.3 应用场景

  数据表示:元组 和 列表

  元组用于素不改变的应场景,更多固定搭配

  列表更加灵活,它是最常用的序类型

  最主要作用:表示一组有序数据,进而操作它们

 

 

4.元组类型及操作

  4.1 元组类型定义

    元组是序列类型的一种扩展

    元组是一种序列类型,旦创建就不能被修改

    使用小括号 ()tuple() 创建,元素间用逗号 , 分隔 ,可以使用或不使用小括号

    例:creature = "cat ", "dog ","tiger ","human "

  4.2 元组类型的操作

    元组继承了序列类型的全部通用操作

    元组因为创建后不能修改,此没有特殊操作

    使用或不使用小括号

 

 

 

5.集合类型及操作

5.1 集合类型的定义

  集合类型与数学中的集合概念一致;

  集合元素之间无序,每个元素唯一,不存在相同元素;

  集合元素不可更改,不能是可变数据类型(不可变数据)。

5.2 集合操作符

  集合用大括号表{},元素间用逗号分隔;

  建立集合类型用{},或set()

  建立空集合类型必须用set()

5.3 集合处理方法

 

操作符及应用

操作符及应用 描述
S|T 并 :返回一个新集合,包括在集合S和T中的所有元素
S-T 差 :返回一个新集合,包括在集合S但不在T中的元素
S&T 交 :返回一个新集合,包括同时在集合S和T中的元素
S^t 部 :返回一个新集合,包括集合S和T中的非相同元素
S <= T 或 S < T 返回 True / False ,判断S和T的子集关系
S >= T 或 S > T 返回 True / False ,判断S和T的包含关系
S |= T 更新集合S,包括在集合S和T的所有元素
S -= T 更新集合S,包括在集合S但不在T中的元素
S &= T 更新集合S,包括同时在集合S和T中的元素
S ^= T 更新集合S,包括集合S和T中的非相同元素

 

集合处理方法:

操作函数或方法 描述
S.add(x) 如果 x不在集合 S中,将 x增加到S
S.discard(x) 移除S中元素 x,如果 x不在集合S,不报错
S.remove(x) 移除S中元素 x,如果 x不在集合S中,产生 KeyError 异常
S.clear() 移除S中所有元素
S.pop() 随机返回S的一个元素,更新S,若 S为空产生 KeyError异常
S.copy() 返回集合S的一个副本
len(s) 返回集合S的元素个数
x in S 判断S中元素 x,x在集合S中,返回True ,否则返回 False
x not in S 判断 S中元素 x,x不在集合S中,返回False ,否则返回True
set(x) 将其他类型变量X转变为集合类型
   

 

 

5.4 集合类型应用场景

  数据去重

6.字典类型及操作

  6.1 字典类型定义

  映射是一种键 (索引 )和值 (数据 )的对应

  键值对:是数据索引的扩展

  字典是键值对的集合,键值对之间无序

  采用大括号 {}dict () 创建, 键值 对用冒号 : 表示

  {< 键1>:< 值1>,  <键2>:< 值2>, …, < 键n>:< 值n>}

  <字典变量 > ={<键1> :<值1> ,… ,<键n> :<值n> }

  <值> = <字典变量 >[<键>]   <字典变量 >[<键>] = <值>
  [ ] 用来向字典变量中索引或增加元素
  

  6.2 字典处理函数及方法

函数或方法 描述
del d[k] 删除字典d中键k对应的数据值
k in d 判断键k是否在字典d中,如果在返回True,否则False
d.keys() 返回字典d中所有的键信息
d.values() 返回字典d中所有的值信息
d.items() 返回字典d中所有的键值对信息
d.get(k,<default>) 键k存在,则返回相应值,不在则返回<default>值
d.pop(k,<default>) 键k存在,则取出相应值,不在则返回<default>值
d.popitem() 随机从字典d中取出一个键值对,以元组形式返回
d.clear() 删除所有的键值对
len(d) 返回字典d中元素的个数

 

  6.3字典类型应用场景

  映射 无处 不在, 键值对无处不在

  例如:统计数据出现的次,是键,次数是值

  最主要作用:表达键值对数据,进而操作它们

 

posted @ 2018-07-19 17:30  阿混1985  阅读(410)  评论(0编辑  收藏  举报