数据类型

  • 整数:(二进制、八进制、十进制、十六进制)[精确]
  • 浮点数:(12300=1.23e4 0.00911=9.11e-3)[存在误差]
  • 字符串:(’ ’ 或 " ")
  • 布尔值:(True/False)[可用 not/or/and 进行运算]
  • 空值:用 None 表示
  • 列表:list,符号为[ ]
  • 元组:tuple,符号为( )
  • 字典:dict,符号为{ }
  • 集合:set,符号为( [ ] )

整数

整数与数学中的整数定义一致,在 Python 中可以精确表示且取值范围没有限制
此外,我们需要了解一下常用的进制:

  • 十进制:911
  • 二进制:以0b或0B开头,0b1110001111
  • 八进制:以0o或0O开头,0o1617
  • 十六进制:以0x或0X开头,0x38f

浮点数

浮点数与数学中的小数定义一致,在 Python 及其他程序设计语言都存在浮点数无法精确表示的情况。(计算机内部采用二进制,而二进制有时无法精确表示某些小数),且取值范围有所限制,约为 (-10)307 至 10308,精度数量级为10-16
Python入门(三):数据类型
:浮点数间比较常用 round 函数。round(x,d) #对x四舍五入,d为小数位数
不确定尾数基本发生在10-16位左右,因此 round 函数十分有效。但是round函数并不是完全的四舍五入,在 .5这个数上出于“平等价值”的考虑,存在奇进偶不进的情况.但若5后面还存在其他小数,即并非对称情况时,即采取四舍五入方法,前提仍是小数位数小于16位。如下图所示:
Python入门(三):数据类型

科学计数法 9.11e-3 == 0.00911 9.11e3 == 9110.0

复数

复数与数学中的复数定义一致,在 python 中虚数单位为 j,值得注意的是复数的实部和虚部都是浮点数
Python入门(三):数据类型

布尔类型

  • Python把0,空字符串’ ’ 和 None看成 False,其他数值和非空字符集都看成 True
a = True
print(a and 'a=T' or 'a=F')
#输出为 'a=T'
  • 短路计算
a = 'python'
print('hello,', a or 'world')
#输出 'hello python'
b = ''
print('hello,', b or 'world')
#输出'hello world'
a = 'python'
print('hello,', a and 'world')
#输出 'hello world'
b = ''
print('hello,', b and 'world')
#输出'hello'

组合数据类型

序列类型

序列类型是一维元素向量,因为元素之间存在先后关系,可通过序号访问。所以称为序列类型。典型代表有字符串类型、列表类型和元组类型。其操作符合函数大致如下所示:

  • x in s:如果x是s的元素,返回True;否则返回False
  • x not in s:如果x不是s的元素,返回True;否则返回False
  • s + t:连接s和t
  • s*n或n*s:将序列s复制n次
  • s[i]:索引,返回序列的第i个元素
  • s[i:j]:切片,返回包含序列s第i到j个元素的子序列(不包含第j个元素)
  • s[i:j:k]:步骤切片,返回包含序列s第i到j个元素以k为步长的子序列
  • len(s):序列s的长度(元素个数)
  • min(s):序列s的最小元素
  • max(s):序列s的最大元素
  • s.index(x):序列s中第一次出现元素x的位置
  • s.count(x):序列s中出现x的总次数

字符串类型

字符串是指由0或多个字符组成的有序字符序列。

  • 单行字符串用 ’ ’ 或 “ ” 表示
  • 多行字符串用 ‘’’ ‘’'表示
  • 如果字符串含有 ’ ’ ,可用 " " 表示;含有 " ",可用 ’ ’ 表示;如果同时包含 " " 和 ’ ’ ,则用 ‘’’ ‘’’ 表示(也可用转义符 \ 表示)。
    Python入门(三):数据类型
    转义符 \
  • 转义符表达特定字符本身的含义
  • 如果在字符串中既需要出现单引号,又需要出现双引号,可使用转义符。
  • 转义符形成一些组合,表达一些不可打印的含义
    \b:回退 \n:换行符(光标移动到下行首) \r:光标移动到本行首
    \a:响铃 \t:水平制表符(光标向右移动一个制表符位)
    Python入门(三):数据类型
  • 补充知识:
  • ASCII编码:因为计算机只能处理数字,因此要处理文本必须先将其转化为数字。最早的计算机在设计时采用八个比特(bit)作为一个字节(byte),所以一个字节所能表示的最大的整数是255,0-255被用来表示数字、大小写英文字母和一些符号,这个编码表称为ASCII编码。
  • Unicode编码:因为中日韩等国家的语言无法用一个字节表示,因此为了统一所有文字的编码,Unicode编码应运而生,用两个字节来表示一个字符,高字节全部填为0。
  • 普通字符串如“Python”是用ASCII编码,而中文则用Unicode编码,字符串前加 u 表示用Unicode编码。如果中文字符串在Python环境下遇到 UnicodeDecodeError,这是因为.py文件保存的格式有问题。可以在第一行添加注释# -*- coding: utf-8 -*-
    (注意:python3版本已经不用再预先设置)

列表类型

  • 列表是包含0个或多个元素的有序序列,可以随时查找、添加、删除和修改其中的元素。列表没有长度限制,不需要预定义长度。
  • 列表中的元素是按照顺序排列的,用 [ ] 符号创建,也可以通过 list(x) 函数将集合、字符串类型或字典类型转换成列表类型。
L = ['Adam', 95.5,'Lisa',85,'Bart',59]
print (L)
  • 一个元素也没有的list:空列表 empty_list = [ ]empty_list=list()
  • 可根据列表中的元素的序号进行引用,即索引: L[3] #输出为85
  • 获得列表的一个片段,即切片:L[:-2] #输出为['Adam', 95.5, 'Lisa', 85]

操作方法
列表类型存在一些操作方法,使用格式为:

<列表变量>.<方法名称>(<方法参数>)
  • 列表元素添加
    (1)list.append(x):将元素x添加到末尾
    (2)list.insert(i,x):将元素x添加到列表第i个位置
  • 列表元素删除
    (1)list.pop(i) :#删除列表第i个位置的元素
    (2)list.clear():删除列表中所有元素
    (3)list.remove(x):删除列表中第一个元素x
  • 列表元素替换
    list[i]=x:将列表i个位置的元素替换成元素x
  • 列表元素反转
    list.reverse():列表元素反转
  • 列表元素复制
    list.copy(ls):生成一个新列表,复制 ls 中所有元素

列表是一个十分灵活的数据结构,具有处理任意长度、混合类型的能力,并提供了丰富的操作手段,因此其在使用组合数据类型管理批量数据时尤为重要。故在此增加一些复杂操作,以便更好地了解和使用列表。

  • 列表生成式
    :请利用列表生成式生成列表 [1x2, 3x4, 5x6, 7x8, …, 99x100]
print([x*(x+1) for x in range(1,100,2)])
  • 条件过滤式
    :编写一个函数,它接受一个列表,然后把其中的所有字符串变成大写后返回,非字符串元素将被忽略。(注:isinstance(x, str) 可以判断变量 x 是否是字符串)
def toUppers(L):
    return [x.upper() for x in L if isinstance(x,str)] 
  • 多层表达式
    :利用 3 层for循环的列表生成式,找出对称的 3 位数,如101 。
print([a*100+b*10+c for a in range(1,10) for b in range(10) for c in range(10) if a==c])

元组类型

  • 元组是特殊的列表,一旦创建,则无法修改。
  • 元组创建符号为 ( ) April = ("听从你心","无问西东")
  • 创建单元素元组:和列表不同,元组中只有一个元素时,会默认符号 ( )此时不表示元组,而是作为括号计算时的优先级,所以单元素元组要后加" , "
    April_one = ("无问西东") #输出为 无问西东 ,即字符串形式 April_two = ("无问西东",) #输出为 ('无问西东',) , 即元组形式
  • 元组中若含有可变类型的数据,则该数据可以改变,即元组是指向不变
April = ('爱你所爱', '行你所行',['听从你心', '无问西东'])
L = April[2]
L(0) = "一身诗意千寻瀑"
L(1) = "万古人间四月天"
#此时 April 输出为 ('爱你所爱', '行你所行', ['一身诗意千寻瀑', '万古人间四月天'])
  • 注意:元组类型操作基本等同于列表操作,故操作符号仍为[]

映射类型

映射类型是“键-值”数据项的组合,每个元素是一个键值对,即元素是(key,value),元素之间是无序的,是序列类型的一种扩展。典型代表是字典类型。

字典类型

键值对”是组织数据的一种重要方式,广泛应用在当代大型信息系统中,如Web系统。其基本思想是将“值”信息关联一个“键”信息,进而通过键信息查找对应的值信息,这个过程叫映射
Python语言中字典类型使用大括号{}创建,每个元素是一个键值对。
注:特殊地,元组可作为一个键,而列表不能,因元组是无序不可变类型
dict的作用是建立一组 key 和一组 value 的映射关系,dict的key是不能重复的。
如下所示,冒号左边为key,右边为value,dict就是通过key来寻找相应的value。
需要注意的是,大括号{}默认生成的是字典类型,其数据类型会根据里面元素性质变化:即嵌入键值对时生成字典类型,嵌入独立元素时生成集合类型

d = {
    'A': 95,
    'B': 85,
    'C': 60
}

操作函数

  • len(d):字典d中的元素个数
  • min(d):字典d中键的最小值
  • max(d):字典d中键的最大值
  • dict():生成一个空字典

操作方法
字典类型存在一些操作方法,使用语法形式是:

<字典变量>.<方法名称>(<方法参数>)

查找:

  • d.keys():返回所有的键信息
  • d.values():返回所有的值信息
  • d.items():返回所有的键值对
  • d.get(key,default):键存在则返回相应值,否则返回默认值default
  • d.pop(key,default):键存在则返回相应值,同时删除键值对,否则返回默认值default

添加

<字典名>[键] = [值]
b.update(a)    #将字典a的内容添加到字典b中

删除

  • d.popitem():随机从字典中取出一个键值对,以元组(key,value)形式返回,同时将该键值对从字典中删除
  • d.clear():删除所有的键值对,请空字典

遍历

for <变量名> in <字典名>:
	语句块

更新
Python入门(三):数据类型

集合类型

Python的集合类型与数学中的集合概念一致,即包含0个或多个数据项的无序组合。
set作为集合持有一系列元素,其元素不能重复,且元素是无序的。
创建 set 的方式有两种,一是直接使用大括号{ },二是调用 set() 并传入一个 list,list的元素将作为set的元素:

s1 = {99,80,75}
s2 = set([99,80,75])

操作符

  • S-T:返回一个新集合,包括在集合S中单不在集合T中的元素
  • S&T:返回一个新集合,包括同时在集合S和T中的元素
  • S^T:返回一个新集合,包括集合S和T中非共同元素
  • S|T:返回一个新集合,包括集合S和T中所有元素
    Python入门(三):数据类型

操作函数
查询
访问 set中的某个元素实际上就是判断一个元素是否在set中。
利用 in 操作符进行判断。

s = {'A','B','C'}
print('B' in s)

更新
例:针对下面的set,给定一个list,对list中的每一个元素,如果在set中,就将其删除,如果不在set中,就添加进去。

s = {'Adam', 'Lisa', 'Paul'}
L = ['Adam', 'Lisa', 'Bart', 'Paul']
for name in L:
    if name in s:
        s.remove(name)
    else:
        s.add(name)
print(s)

遍历

 s = set([('A', 95), ('B', 85), ('C', 60)])
for x in s:
    print(x[0]+':',x[1])

相关文章: