最实用的Python基础讲解,带你轻松学完数据类型

Python 的数据类型

1. 数字类型

2. 字符串类型

3. 布尔类型

4. 列表

5. 元组

6. 字典

7. 集合


python 语言的好处,对变量不用事先定义,随用随定义,也不用特意用分号做语句末端的分隔,大部分用换行和缩进来规范代码的编写,自己识别,编译工具也非常友好(如:Pycharm)。但从内存使用的出发角度来说,它会在编译器中自动做判断,这就是它速度慢的原因。


下面举例在C语言中和python语言中的定义:

C:                                      Python:
    int a = 2;                                a = 2    #只给 a 赋值 2,但编译器不知道a的数据类型
    float b = 2.1;                                   #它会在内存中一直判断a的数据类型,最终判断为int型
    /* 简单明了,直接内存分配*/

1. 数字类型

1.1    数字整型 :int
        用于定义整数的关键字,如:2,3,5

1.2   浮点型: float  ,  double
        用于定义小数的关键字,但 float 与 double精度不同。
    
1.3   精度 :
           float和double的精度是由尾数的位数来决定的。浮点数在内存中是按科学计数法来存储的,其整数部分始终是一个隐含着的“1”,由于它是不变的,故不能对精度造成影响。 
           float:2^23 = 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字;
           double:2^52 = 4503599627370496,一共16位。同理,double的精度为15~16位。 
但是python的编译环境是非常友好的,它会自己帮你转化,所以我们可以直接赋值直接用,但由于精度的原因,也会造成精度的丢失

2. 字符串类型

2.1 String 类型,在python中简写成 str 。用于定义字符串的关键字。用单引号和双引号引起来。
定义方式: a = “Hello_world!” 或 a = ‘Hello_world’
但如果我们要输入 I’m fine 该怎么办呢? 这里有两种方法:
(1)用双引号在外边引起来,但必须是成双成对出现:
print(" I’m fine ")
(2)用转义符 ’ ’ 来转义字符实现输出:
print(’ I’m fine ')

2.2 字符串的转换,如想将整型数字和字符串连接起来,可以有两种方法来操作:
第一种方法:用 ‘ + ’连接,并将数字类型前用str()将其转换成字符串类型,否则会报错:数据类型不合法
b = 163
c = “cm”
print( str(b)+c ) ## 163cm
第二种方法:用 字符内部函数 join 来实现字符串的连接
d = “小明”
e = “is handsome”
print(d.join(e)) ##小明is handsome

2.3 字符串的内置方法在后续更新中将会全部一 一讲解。


3. 布尔类型

虽然整型、浮点型和数字类型有无数种可能的值,但 '布尔’数据类型只有两种值:True和False。Boolean的首字母要大写。
print(7>6) ##True
print(1==3) ##False
同样也可以用于其他类型的Boolean操作。


4. 列表

4.1 列表是什么?
"列表"是一个值,它包含多个字构成的序列。术语“列表值”指的是列表本身,而不是指列表内的那些值。列表看起来像这样:[‘cat’ , ‘dog’ , ‘bat’]。列表用左方括号开始,右方括号结束,即[ ]。列表中的值也成为“表项”。表项之间用逗号分隔开。
定义方法: 变量名 = [ 表项 ] 如: animals = [‘cat’ , ‘dog’ , ‘bat’]

4.2 查列表内容
4.2.1 用下标取得列表中的单个值

animals cat dog bat
索引值 0 1 2

animals[0] = cat
animals[1] = dog
animals[2] = bat
切记,下标只能是整数且从0开始,不能是浮点数。如果使用的下标超出了列表中值的个数,Python将给出IndexError出错信息。

    4.2.2 用切片遍历列表
        a = [ '1', 'aa', 'tt', 'zhw' ,'yyh'] 
        切片有三种方式:
            (1)[x:y] : 从 x 到 y-1 制作为切片
                如:print(a[1:3])            ##  [ 'aa' , 'tt' ] 
            (2)[ : ] :切取全部元素
            (3)[ x : y : n ] :从 x 到 y-1 ,每 n 个取一个制作切片
                如:print([ 0 : 5 : 2])     ##[ '1' , 'tt' , 'yyh']
                
    4.2.3 倒序切片a = [ '1', 'aa', 'tt' ] 
        对于 list,Python支持 list[-1]取倒数第一个元素,它同样也支持倒数切片。
        (1)a[ -2: ]
        (2)a[ : -2]
        (3)a[ -4 : -1 : 2]
        这里三种倒序切片方式同4.2.2 ,大家自行思考。也欢迎在评论区探讨答案。
        
        
 4.3    对列表操作:增加,删除,修改,引用,排序的内置方法及操作。
        a = [ '1', 'aa', 'tt' ]  创建一个列表 a ,每次操作默认用此处的列表 a,除个别新建列表。
        这里提到的index为下标值
     4.3.1 增加
        (1)a.append()                  ##在末尾追加
        如:a.append('zz')         
            print(a)                         ## [ '1', 'aa', 'tt' ,'zz']
        (2)a.insert(index,'内容')      ##插入下标位置 ,用于准确位置插入内容
        如:a.insert(1,'zz')
               print(a)                     ##[ '1', 'zz','aa', 'tt' ]
        (3)a.extend()                  ##扩展,将扩展的字符串的每个单位拆分成单个字符追加到列表尾部
        如:a.extend('zz')
                print(a)                    ## [ '1', 'aa', 'tt' ,'z', 'z']
        
     4.3.2  删除   
     (1)remove('内容')          
     (2)pop(index)                   ##抛出的值可以使用
            pop出去的值可以传参给一个变量使用
            如:reuse = a.pop[1]
                    print(reuse)          ## aa
                    我们可以再打印一下原来的a,会发现抛出了 ‘aa’。
     (3)del a, del a[index]
        del a 是直接将a删除,如果我们再打印则会报错:name 'a' is not defined 。
        del a[index] 可以准确快速删除指定位置的表项。
     (4)a.clear()                       ##清空列表
           此操作会清空列表 a 的表项,但会保留列表,如果再打印列表 a ,将会打印出一个空列表。
     
     4.3.3 修改
      (1)a[index] = '新的值'
            准确快速地修改指定位置的表项。
      (2)a[start:end] = [a,b,c]
            从下标为start的到end-1下标的内容修改,有几个元素填几个内容。此处举例为3个,a,b,c。

    4.3.4   引用
        a = ['dog' , 'cat' , 5]
        b = a
        print(a)        ## ['dog' , 'cat' , 5]
       当你将列表赋给一个变量时,实际上是将列表的“引用”赋给了该变量。引用是一个值,指向某些数据。列表引用时指向一个列表的值。
       
     4.3.5  排序
        sort()                 #从小到大排序  或按ASCII表
        reverse()              #将列表里的元素倒过来

5. 元组

5.1 元组(Tuple)与列表十分相似,但有一个特别明显的区别在于,元组一旦初始化就不可以修改。列表是“可变的”数据类型,元组是“不可变的”数据类型,它就像定义一个字符串一样,一旦定义出来就不能被更改。

 5.2    元组的定义
        变量名 = ( 元组内容)
        如:vagetables = ( 'tomoto', 'potato','mushroom' )
        由于只能查看调用元组内容,方法与列表一样。
        
  5.3   用 list() 和 tuple() 函数来转换类型
        函数 list() 和 tuple() 将返回传递给它们的值的列表和元组版本。
        tuple ( [ 'dog', 'cat', 5 ] )   ----->('dog' , 'cat' , 5)
        list [ ( 'dog' , 'cat' , 5 ) ]    ----->['dog' , 'cat' , 5]

6. 字典

6.1 字典(dictionary)是python中唯一的映射类型,采用键值对 (key-value) 的形式存储数据。python 对 key 进行哈希函数运算,根据计算的结果决定 value 的存储地址。所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。每个键和它的值之间用冒号( : )隔开,项之间用逗号( , )隔开,整个字典由一对大括号括起来。字典中键是唯一的,而值并不唯一。

6.2     字典的创建和使用            
        6.2.1  直接创建和转化创建
               (1) 直接创建: dic = {'name' : 'zhw', 'age':'20', 'sex' : 'male', 'as' : True, }
                注意:大家在直接创建字典时,要有在末尾加上逗号的习惯,这样如果需要添加新的键值对时方便,涉及后面做全栈用Django框架时对添加app有良好的编程习惯。
                
                (2)用dict()函数转化创建
                    items = [ ('name', 'zhw'), ('age', 20)]
                    d = dict(items)
                    print(d)              ## {'name' : 'zhw' , 'age' : 20}
                    
  6.3   对字典操作,查、增、删、更新。
    我们创建一个字典 dic = {'name' : 'zhw', 'age':'20', 'sex' : 'male', 'as' : True, }
        (1)查
            i. 直接打印查询
                print(dic('name'))
            ii. 通过内置get() 方法返回键对应的值,有则返回键对应的值,无则返回 None.  也可指定返回内容
                print(dic.get('zz'))                ------>None
                print(dic.get('zz','Uknown'))   ------>Known  
                
        (2)增加新的键值对或者修改
            i.  dic[' hobby'] = 'music'       #若键存在则修改,不存在则添加
            ii.  setdefault() 方法              #若键存在则不修改,若键不存在则增加新的键值对
                dic.setfault('tall', 173)       
            iii. update() 更新方式 ,如果键存在则修改,若键不存在则增加新的键值对
                dic1 = {'name':'zhw','age':'20','sex':'male','as':True,}
                dic2 = {'hobby':123,'heiht':187}
                dic1.update(dic2)
                print(dic1)    ##结果如下                      {'name':'zhw','age':'20','sex':'male','as':True,'hobby':'soccer','heiht':187}
             
        (3)删
             dic3 = {'name':'zhw','age':'20','sex':'male',}
            i.  del dic3['age']       ##准确的删除某个键,键一删除,值也相应被删除 
                del  dic3                ##删除整个字典
                
            ii.  clear( )               ##清空整个字典,但会保留字典为空
            
            ii.  pop( )                ##通过键的查找抛出,也可传参给变量,类似列表
            
            iii.  popitem( )          ##随机删除某组键值对,并以元组方式返回值
                a = dic3.popitem( )
                print( a )    
  
  6.4   对字典的遍历
        三种字典方法:keys() , values() , items()方法
            for k in dic.keys():
                print( k )           ## keys( )遍历的是键
                
            for v in dic.values():
                print( v )          ## values() 遍历的是值
                
            for i in dic.items():
                print( i )          ## items() 遍历的是键-值对,以元组的形式输出
        (1)高效遍历字典
                for i in dic:
                    print( i , dic[ i ] )
               这里 i 做循环数,但在dic [ i] 里面做下标,这样可以准确快速的定位到对应的键值对,比传统的遍历更节省时间。
               
        (2)传统遍历字典
                 for i,v in dic6.items():
                     print(i,v)
                这里遍历方法较传统,速度较慢。

7. 集合

7.1 集合(set)是一个无序的不重复元素序列,元素必须是可哈希的。集合可以使用大括号 { } 或者set() 函数创建,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典的。

    7.2 创建集合:
            para = {val0, val1, val2,...}   或者      set(val)
            
    7.3 集合的显著去重功能
            s = set('alice like')
            print(s)                    ##{'c', 'i', 'l', 'a', 'e', 'k', ' '}
            
     7.4 集合的增加、删除、清空
            s = [2,33,44,'zhw' ]
            s1 = set( s )
        (1)增加
            s1.add( x )           #将元素x添加到集合s1中,如果元素已存在,则不进行任何操作
            s1.update( x )     # update方法可以添加元素,且参数可以是列表,元组,字典等。
            如: s1.update( [ 1,5 ] )
        (2)删除
            s1.remove(x)    #将元素x从集合s1移除,如果元素不存在,则会报错
            s1.discard(x)    #如果元素不存在,不会放生错误
            s1.pop()           #设置随机删除集合中的一个元素
        (3)清空
            s1.clear()          #清空集合中的元素,保留为空集合
            
      7.5   集合类型操作符
        7.5.1   in ,not in
            print(a in b)         |     print(a not in b) 
            判断a包含于b           判断a不包含于b    (这里a,b都为集合)
            
        7.5.2   等价与不等价(==,!=)
               print(set('alex')==set('alexxxx'))
               
        7.5.3   超集与子集
                print(set('alex')b  a包含b内的所有元素且元素比b多 
                print(a.issubset(b))  #子集  a

本文纯属个人见解,适用于基础数据类型的基本概念与操作,希望能对初学者带来帮助,谢谢大家阅读,也欢迎大家在评论区发表疑惑!

你可能感兴趣的:(Python基础,Python数据类型讲解,Python基础)