美文网首页
Python基础之基本数据类型

Python基础之基本数据类型

作者: 时间仍在o是我们飞逝 | 来源:发表于2018-09-07 17:18 被阅读0次

    前言:基本类型是需要掌握的,是编程基础。不理解没关系,死记住就好了,就像你小时候背9*9乘法表也不需要为什么。

    Python的基本数据类型有 数字,字符串,列表,元组,字典,集合

    一:数字

    Python3 数字类型支持 int(长整型)、float(浮点型)、bool、complex(复数)。其中的bool为True(等同于数字1),或者False(等同于数字0),可以进行数值运算;
    使用type()函数和isinstance()可以查看对象类型:

    print(type(1), type(1.5), type(True), type(5 + 3j))
    print(isinstance(1,int),isinstance(True,int),isinstance(True,bool))
    print(True + 1,False+1)
    

    结果为:

    <class 'int'> <class 'float'> <class 'bool'> <class 'complex'>
    True True True
    2    1
    
    数值运算

    ①加法用 +,减法用 -,乘法用 *,乘方用**;
    ②关于除法有两种:\ 和 \\,前者表示结果为浮点数,后者表示结果为整型

    print(9/2,9//2,10/3,10//3)
    

    结果为

    4.5   4   3.3333333333333335   3
    

    二:字符串

    用单引号 ' 或双引号 " 括起来的任意文本即为字符串,字符串中的特殊字符要使用 \ 来转义。

    ①转义

    字符串中含有如特殊字符需要转义,比如 \' , \" ,\n,\t等,他自身\ 也需要转义。

    print("I'm \n    \"ok\"  \n  \\  \n  \\")
    

    输出

    I'm 
        "ok"  
      \  
      \
    

    使用 r ' '可以使字符串中的字符不转义,原样输出。

    print(r"I'm \n    \"ok\"  \n  \\  \n  \\")
    

    输出:

    I'm \n    \"ok\"  \n  \\  \n  \\
    
    ②格式化

    三种方式 % f, format:

    name = 'tom'
    mobile = 1388888888
    print('%s 的手机号码是 %s' % (name, mobile))
    print('{} 的手机号码是 {}'.format(name, mobile))
    print(f'{name} 的手机号码是 {mobile}') #3.6支持
    

    输出为

    tom 的手机号码是 1388888888
    tom 的手机号码是 1388888888
    tom 的手机号码是 1388888888
    
    ③常见方法

    find(),join (),split (),replace (),strip ()等等,遇到再翻资料;

    三:布尔值

    布尔值本质上0(False)和1(True),运算有and,or,not

    print(True and True)  # and是与运算,两边都为True,最终结果才是True
    print(True or False)  # or是或运算,一边为True,最终结果即是True
    print(not False)  # not是非运算,取反
    

    结果为

    True
    True
    True
    

    最后,在判断条件中,None,"",(),[],{},0均代表Fasle:

    if not '' or None or () or [] or {} or 0 or False:
        print("均为假")
    

    输出

    均为假
    

    因为 ' ' or None or () or [] or {} or 0 or False ,整体为False,所以not False为True,才能执行方法体中print。or运算中全为False才能整体为False。

    四:列表(list)

    list为可变的,有序的集合。即长度可变,元素排列有序;但元素类型可以不一致

    ①定义一个list:使用 [ ]

    list = ['A', 'B', 666, True]
    print(len(list))  # len()得到list长度,即元素个数
    

    ②对元素操作:

    通过list[n],n范围为0~len(list)-1,本例中n可取值0,1,2,3,(如果倒着数,最后一个元素下标为-1)超过这个范围会跑出数组越界 IndexError 错误

    (1)获取元素,元素赋值
    print(list[0])
    print(list[1])
    print(list[2])
    print(list[3])
    # print(list[4])    IndexError
    print("----------")
    print(list[-1])
    print(list[-2])
    print(list[-3])
    print(list[-4])
    # print(list[-5])   IndexError
    
    list[0] = "888"  # 通过元素下标可以修改元素
    print(list)
    

    输出

    A
    B
    666
    True
    ----------
    True
    666
    B
    A
    ['888', 'B', 666, True]
    
    (2)增减元素
    # 增减元素
    list.append("append")  # append追加到末尾
    print(list)
    list.insert(0, 'insert')  # insert插入到指定位置
    print(list)
    list.pop()  # 删除末尾
    print(list)
    #pop可以接收删除的元素并继续使用
    list.pop(0)  # 删除指定位置,
    print(list)
    

    输出:

    ['888', 'B', 666, True, 'append']
    ['insert', '888', 'B', 666, True, 'append']
    ['insert', '888', 'B', 666, True]
    ['888', 'B', 666, True]
    
    (3)list嵌套

    list元素也可以是另一个list。

    list = ['A', 'B', ['c', 'd']],#注意list的长度为3,看成是一个二维数组
    # 拆解list为 l1,l2
    l1 = ['c', 'd']
    l2 = ['A', 'B', l1]
    print(list)
    print(l2)
    #获取子list中的元素
    print(list[2][1])
    print(l1[1])
    

    输出:

    ['A', 'B', ['c', 'd']]
    ['A', 'B', ['c', 'd']]
    d
    d
    

    五:元组(tuple)

    tuple用 ( )来表示。
    tuple和list都是python内置的有序的集合,区别是前面的列表list是可变的,而元组tuple是不可变的。
    既然是不可变的,那么tuple,只提供了获取元素的方法,其他类似append,pop,insert之类都是没有的。

    t = (1, 2, 3) # 一旦初始化,不可更改,元素在初始化的时候定义
    print(t[0])
    print(t[2])
    print(t[3]) #IndexError
    

    注意:当tuple只有1个元素的时候,为了区分()是为了定义tuple还是数学意义的括号,需要加“ ,” 区分。

    t = (1) # int 类型  1
    print(t)
    t = (1,)# tuple
    print(t)
    

    输出:

    1
    (1,)
    

    当tuple内部有个可变的列表list的时候,tuple的元素是可以变化的。这和tuple的“不可变”并不冲突。

    t = ('a', 'b', ['A', 'B'])
    t[2][0]='X'
    t[2][1]='Y'
    print(t) #输出为  ('a', 'b', ['X', 'Y'])
    

    搬个图解释:


    初始状态.png 更改后.png

    不可变指的是:tuple元素的引用指向不可变(可以理解为地址不改变),但是这个引用指向的内容是可变的。对应例中,t[2]的引用在初始化后就不变了,就可以可理解为t本身就不可变。至于t[2]本身内容是什么,变不变,t 本身并不关心。

    六:字典dict

    dict全称dictionary,是一种使用key-value ( 键值对 ) 的类型。优点,查找快。

    ①定义

    (1):初始化的时候定义元素:
    d = {'小王': 10, '大王': 20, '老王': 30}
    
    (2) :通过key,当如指定的value:
    d={}
    d['小王']=10
    d['大王']=20
    d['老王']=30
    print(d)  #输出 {'小王': 10, '大王': 20, '老王': 30}
    

    ②赋值,查询,删除

    (1)根据key赋值:
    d['小王']=99 
    print(d)   #{'小王': 99, '大王': 20, '老王': 30}
    d['小王']=88 #多次对同一个key放入不同的value,会覆盖前面的赋值
    print(d)    #{'小王': 88, '大王': 20, '老王': 30}
    
    (2)根据key查出相应的value:
    age=d['小王']
    print(age)
    age=d['王'] #KeyError,当key不存在会抛出这个错误
    

    当key不存在,会抛出KeyError,避免key是否存在的方法:
    ①‘key’in dict 判断dict中是否又该key
    ②dict.get('key',defaultValue),如果key不存在,可以返回None

    (3) 用pop(key) 删除一个键值对
    d.pop('小王')
    print(d)  #{'大王': 20, '老王': 30}
    

    dict的查找是根据key计算出value的位置。因此必须保证key是不可变的,否则每次计算出的value位置都不同,内部将会混乱。在Python中,字符串、整数等都是不可变的,因此,可以放心地作为key。而list是可变的,就不能作为key. dict存储的顺序和插入顺序无关,是无序的。

    七:set

    set和dic的区别在于,set没有储存对应的value,只有key。同时对key的要求也是唯一不可变,因此set可以看成是无序和无重复元素的集合

    (1)定义

    定义一个set,需要一个 list 作为参数

    l = [1, 2, 3, 4]
    s=set(l)
    print(s) # {1, 2, 3, 4}
    

    (2)增加,删除元素

    s.add(1)
    s.add(2) #重复元素会过滤掉
    print(s)
    s.remove(4) #删除一个元素
    print(s)
    

    输出:

    {1, 2, 3, 4}
    {1, 2, 3}
    

    点赞评论走起啊~

    相关文章

      网友评论

          本文标题:Python基础之基本数据类型

          本文链接:https://www.haomeiwen.com/subject/rfocgftx.html