二.python数据类型

1.什么是数据类型

  • Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。
  • 对象的三个特性:
  1. 身份:内存地址,可以用id()获取
  2. 类型:决定了该对象可以保存什么类型值,可执行何种操作,需遵循什么规则,可用type()获取
  3. 值:对象保存的真实数据 

2.标准数据类型

2.1 数字

  • 在python中数字可以分为:整型,长整型,布尔型,浮点型,复数几种: 
  • 特性:

  不可更改.(如果修改会生成新的对象)

2.1.1 整型

  • 定义:整型相当于整数型,包括正数或负数,比如1,-12,123都属于整型
  • python2.*与python3.*关于整型的区别

  python2.*
  在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647

  在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807

  python3.*

  整形长度无限制

2.1.2 长整型

  • 定义:整型根据不同的操作系统会有取值范围,当取值范围超过整型的最大值或最小值时长整型就出现了,和整型的区别是在后面多个L
  • python2.*与python3.* 关于长整型的区别

  python2.*

Python 2.7.6 (default, Oct 26 2016, 20:30:19) 
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> a = 9223372036854775807
>>> a
9223372036854775807
>>> a = a + 1
>>> a
9223372036854775808L
>>> 

  python3.*

Python 3.4.0 (default, Jun 19 2015, 14:20:21) 
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> a = 9223372036854775807
>>> a
9223372036854775807
>>> a = a + 1
>>> a
9223372036854775808
>>> 

 

2.1.3 布尔型

  • 定义:用来表示真假,True为"真" ,False为"假"。  数字表示1为真,0为假。
  • 一般用于逻辑运算,逻辑运算如下:
  1. 与:and(两个都为True,结果才为True)
  2. 或:or(只要一个为True,则为True)
  3. 非:not(把True变为False,把False变为True)

2.1.4 浮点型

  • 定义:浮点数就是初中时候学的"小数",用来计算更精确的计数,用float指定。

  例如:在python2.x中,5/2=2,默认是整型输出,这时需要指定数字的类型

Python 2.7.6 (default, Oct 26 2016, 20:30:19) 
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 5/2
2
>>> type(5/2)
<type 'int'>
>>> float(5)/float(2)
2.5
>>> type(float(5)/float(2))
<type 'float'>
>>> 

 

2.1.4 复数

  • 定义:复数是由一个实数和一个虚数组合构成,表示为:x+yj,其中x是实数部分,y是虚数部分。
  • python中复数的概念:
  1. 虚数不能单独存在,它们总是和一个值为0.0的实数部分一起构成一个复数
  2. 复数由实数部分和虚数部分构成
  3. 表示虚数的语法:real+imagej
  4. 实数部分和虚数部分都是浮点数
  5. 虚数部分必须有后缀j或J(大写J==小写j)

2.1.5 操作符

  • 定义:数值类型可以进行多种运算操作,这种运算所用到的字符,统称为操作符
  •  操作符分类:
    1.标准类型操作符(比较)

    <(小于), >(大于), ==(等于), <=(小于等于), >=(大于等于),, !=(不等于)

    2.算数操作符

    +(加), -(减), *(乘), /(浮点除法), //(整除), %(取余), **(幂运算)

2.2 字符串

  •  定义:它是一个有序的字符的集合,用于存储和表示基本的文本信息,' '(单引号)或" "(双引号)或""" """(三引号)中间包含的内容称之为字符串
  • 特性:
  1. 只能存放一个值
  2. 不可变
  3. 按照从左到右的顺序定义字符集合,下标从0开始顺序访问,有序

  字符串的常用操作方法

  去除空格

>>> str1 = " All is well "
>>> str1.lstrip() #去除左边空格
'All is well '
>>> str1.rstrip() #去除右边空格
' All is well'
>>> str1.strip()  #去除两边空格
'All is well'
>>> 
去除空格

  连接字符串

>>> str1 = "All"
>>> str2 = " is well"
>>> str1+str2
'All is well'
>>> 
连接字符串

  切割字符串

>>> str1 = "a bc def"
>>> str1.split(" ")     #以空格进行切割
['a', 'bc', 'def']
>>> 
切割字符串

  拼接字符串

>>> str1 = "abcdefg"
>>> ':'.join(str1)  #以冒号进行拼接
'a:b:c:d:e:f:g'
>>> 
拼接字符串

  更多方法:

>>> str1 = "Hello world"
>>> dir(str1)
['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getslice__', '__gt__', '__hash__', '__init__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '_formatter_field_name_split', '_formatter_parser', 'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
>>> 
更多字符串方法

2.3 列表

  • 定义:列表是处理和存放一组可变数据,在[] 中括号内以逗号分隔。比如[1,2,3]是一个列表,1,2,3是列表的元素。
  • 特性:

  1. 能放多个值

  2.可变(可以随时添加或删除)

  3.有序集合

  4.定义语法:ShoppingList = ['car','clothes','Iphone']

  列表的基本用法:

#
>>> ShoppingList = ['car','clothes','Iphone']
>>> print(ShoppingList)
['car', 'clothes', 'Iphone']
>>> 
>>> ShoppingList.append('MP3')
>>> print(ShoppingList)
['car', 'clothes', 'Iphone', 'MP3']
#
>>> print(ShoppingList)
['car', 'clothes', 'Iphone', 'MP3']
>>> ShoppingList.remove('MP3')
>>> 
>>> print(ShoppingList)       
['car', 'clothes', 'Iphone']
>>> 
#
>>> print(ShoppingList)       
['car', 'clothes', 'Iphone']
>>> ShoppingList[0] = 'MP3'
>>> 
>>> print(ShoppingList)    
['MP3', 'clothes', 'Iphone']
>>> 
#
>>> print(ShoppingList)
['MP3', 'clothes', 'Iphone']
>>> print(ShoppingList[0])
MP3
>>> print(ShoppingList[1])
clothes
>>> print(ShoppingList[2])
Iphone
>>> print(ShoppingList[3]) #超出索引会报错
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range
>>> print(ShoppingList[-1])
Iphone
>>> print(ShoppingList[-2])
clothes
>>> print(ShoppingList[-3])
MP3
>>> 
#特殊用法(切片)
>>> num = [x for x in range(10)] #生成
>>> print(num)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> num[0:3] #取值0<=n<3
[0, 1, 2]
>>> num[:3] 
[0, 1, 2]
>>> num[0:-3] #取值0到倒数第三个
[0, 1, 2, 3, 4, 5, 6]
>>> num[-3:0] #倒数第三个开始,0结束,中间没有值
[]
>>> num[0:9:2] #取0-9,步长为2
[0, 2, 4, 6, 8]
>>> 
基本用法

  更多方法:

>>> list1 = [1,2,3,4]
>>> dir(list1)
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
>>> 
列表更多用法

2.4 元组

  • 定义:元组是处理和存放一组不可变数据,在()小括号内以逗号分隔。比如(1,2,3)是一个元组,1,2,3是元组的元素。
  • 特性:

  1.能放多个值

  2.不可变

  3.有序集合

  4.定义语法:UserName = ('张三','李四','王五')

  元组的基本用法:

#定义查看
>>> tuple_test = (1,2,3,4)
>>> print(tuple_test)     
(1, 2, 3, 4)
>>> type(tuple_test)
<class 'tuple'>
#元组是不可变因素,因此不能像列表那样,增删改。一旦定义,不能改。
#按索引读取
>>> tuple_test[0]
1
>>> tuple_test[1]
2
#定义元组的误区(这里1为什么类型是int?)
>>> tuple_test2 = (1)
>>> print(tuple_test2)
1
>>> print(type((tuple_test2)))
<class 'int'>
#以上python会把(1)当成小括号。最后是int类型
#正确定义元组示例如下,这里定义(1,) 有个逗号。
>>> tuple_test3 = (1,)
>>> print(tuple_test3)
(1,)
>>> print(type(tuple_test3))
<class 'tuple'>
>>> 
#切记,当元组内有单个元素时,必须在后面跟上一个逗号(,)

#特殊示例(为什么元组变了?)

>>> tuple_test4 = (1,2,3,[4,5])
>>> print(tuple_test4
tuple_test4
>>> print(tuple_test4)
(1, 2, 3, [4, 5])
>>> tuple_test4[3][0] = "A"
>>> tuple_test4[3][1] = "B" 
>>> print(tuple_test4)     
(1, 2, 3, ['A', 'B'])
>>> 
#这里要说明的是,元组不变的特性其实指的是元组的元素不变,而元组内的元素是个列表,这个列表已经指向了内存的固定位置,但是根据列表的特性,这个列表是可变的,但是,即使这个列表变,在内存中还是不变的。
内存地址不变例子:
>>> tuple_test4 = (1,2,3,[4,5])
>>> print(tuple_test4)
(1, 2, 3, [4, 5])
>>> id(tuple_test4[3])
140625563278408     #改之前的内存地址
>>> tuple_test4[3][0] = "B"
>>> tuple_test4[3][1] = "C" 
>>> print(tuple_test4)
(1, 2, 3, ['B', 'C'])
>>> id(tuple_test4[3])
140625563278408    #改之后的内存地址
>>> 
元组的基本用法

  更多方法:

>>> tuple_test = (1,2,3,4)
>>> dir(tuple_test)
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']
>>> 
元组更多用法

2.5 字典

  • 定义:字典是另一种可变容器模型,且可存储任意类型对象,如字符串、数字、元组等其他容器模型。
  • 特性:

  1.可存放多个值

  2.键必须独一无二,但值则不必。

  3.可修改指定key对应的值,可变

  4.每个键与值用冒号隔开(:),每对用逗号分割,整体放在花括号中({})。

  • 定义语法:Info = {'name':'zhangsan','age':23}

  字典基本用法:

#
>>> NameInfo = {}
>>> NameInfo['name'] = 'All is well'
>>> NameInfo['age'] = '23'
>>> print(NameInfo)
{'age': '23', 'name': 'All is well'}
>>>
 
#删(分为删除字典元素与清空字典)
#单个元素删除
>>> NameInfo = {}
>>> NameInfo['name'] = 'All is well'
>>> NameInfo['age'] = '23'
>>> print(NameInfo)
{'age': '23', 'name': 'All is well'}
>>> del NameInfo['name']
>>> print(NameInfo)
{'age': '23'}

#清空字典
>>> NameInfo = {'name':'All is well','age':23}
>>> 
>>> print(NameInfo)
{'age': 23, 'name': 'All is well'}
>>> NameInfo.clear()
>>> print(NameInfo)
{}

#
>>> NameInfo = {'name':'All is well','age':23}
>>> NameInfo['name'] = 'zhangsan'
>>> print(NameInfo)
{'age': 23, 'name': 'zhangsan'}
>>>

#更新(这里切记键不能重复,否则会报错,违反了特性)
>>> test = {'a':1,'b':2,'c':3,'d':4}
>>> print(test)
{'b': 2, 'd': 4, 'c': 3, 'a': 1}
>>> test2 = {'eee':5}
>>> test.update(test2)
>>> print(test)
{'b': 2, 'd': 4, 'c': 3, 'eee': 5, 'a': 1}
>>> 

#
>>> NameInfo = {'name':'All is well','age':23}
>>> print(NameInfo) #打印字典
{'age': 23, 'name': 'All is well'}
>>> print(NameInfo['name']) #以键取值
All is well
>>> 

#无序体现
>>> test = {'a':1,'b':2,'c':3,'d':4}
>>> print(test)
{'b': 2, 'd': 4, 'c': 3, 'a': 1}
>>>
字典基本用法

  字典更多用法:

>>> test = {'a':1,'b':2,'c':3,'d':4}
>>> dir(test)
['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
>>> 
字典更多方法

2.6 集合

  • 集合是一个无序不重复元素的集。基本功能包括关系测试和消除重复元素。
  • 特性:

  1.无序的
  2.元素不能重复
  3.没有索引
  定义语法:se = set([11,22,33,44])  

  集合的操作符

  集合的基本用法 

#生成集合
>>> a= set([1,2,3,4])
>>> print(type(a))
<class 'set'>
>>> 
>>> a.add(213)   #增加内容
>>> a
{1, 2, 3, 4, 213}  

>>> a.update([11,12,13]) #增加多条内容
>>> a
{1, 2, 3, 4, 11, 12, 13, '213'}

>>> a.remove('213') #删除内容
>>> a
{1, 2, 3, 4, 11, 12, 13}
>>> 
#常用方法

>>> x = set('12345')
>>> y = set('45678')
>>> x
{'5', '2', '1', '3', '4'}
>>> y
{'5', '6', '7', '4', '8'}
>>> x & y #交集
{'5', '4'}
>>> 
>>> x|y    #并集
{'7', '3', '5', '2', '1', '6', '4', '8'}
>>> 
>>> x - y  #差集
{'2', '1', '3'}
集合基本用法

  集合的更多用法

>>> a = set([11,22,33,44])
>>> 
>>> dir(a)
['__and__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__iand__', '__init__', '__ior__', '__isub__', '__iter__', '__ixor__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__rand__', '__reduce__', '__reduce_ex__', '__repr__', '__ror__', '__rsub__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__xor__', 'add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update']
>>> 
集合更多用法

 

3.数据类型的总结

1.存储模型分类

  • 标量/原子类型------------------------>数值(所有的数值类型), 字符串(全部是文字)
  • 容器类型 ------------------------------>列表 元组 字典

2.变更性分类

  • 可变类型 ------------------------------->列表 字典
  • 不可变类型----------------------------->数字 字符串 元组

 3.访问模型

  • 直接访问-------------------------------->数字
  • 顺序访问-------------------------------->字符串 列表 元组
  • 映射访问-------------------------------->字典
posted @ 2017-07-24 22:14  Mr.gaofubin  阅读(466)  评论(0编辑  收藏  举报