美文网首页
2018-03-01

2018-03-01

作者: 超级宅男 | 来源:发表于2018-03-01 22:33 被阅读0次

    day03-数据类型,类型转换,运算符

    一、数据类型

    列表类型(有序的数据的集合)

    定义: 使用[] 定义一个列表 。列表里面的值可以是

    1.定义一个空列表 []
    2.下标可以读取列表值  classList[0]
    3.也有同字符串的切片截取 eg:classList[:3] #截取下标3之前的数据
    4.也有同字符串相同的'+' 和 '*''
    5.列表也可以对称赋值[num1,num2] = [10, 20]
    6.判断元素是否存在print('asd' in classList)
    
    # --------------------------------------------------------------------------------
    # 列表
    classList = ['张三','李四','王五','a']
    print(type(classList)) #<class 'list'>
    print(len(classList)) # 4
    print(len('1234')) # 4 ?
    print(type('1234')) # <class 'str'>
    
    # 列表的切片
    classList = [1,2,3,4,5,6,7,8,9,0]
    print(classList[:3]) #[1, 2, 3]
    print(classList) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
    # 列表翻转函数
    print(classList[::-1]) #[0, 9, 8, 7, 6, 5, 4, 3, 2, 1]
    print(classList) #[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
    print(classList.reverse()) #None
    print(classList) #[0, 9, 8, 7, 6, 5, 4, 3, 2, 1]
    # 列表的元素相加
    print(classList + classList)#[0, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 9, 8, 7, 6, 5, 4, 3, 2, 1]
    # 列表元素的重复
    print(classList*1)#[0, 9, 8, 7, 6, 5, 4, 3, 2, 1]
    
    # --------------------------------------------------------------------------------
    classList = ['A','B','C','D','E','F']
    # 修改列表某元素
    classList[0] = '*'
    print(classList)#['*', 'B', 'C', 'D', 'E', 'F']
    # classList[100] = '&'  #越界,报错
    print(classList)#['*', 'B', 'C', 'D', 'E', 'F']
    
    # 删除指定的元素
    del classList[0]
    print(classList)#['B', 'C', 'D', 'E', 'F']
    
    # 删除列表
    del classList
    # print(classList[0])  #  NameError: name 'classList' is not defined
    
    classList = ['A','B','C','D','E','F']
    # 删除前两个元素
    # print('mask')
    print(classList)
    classList[:2] = []
    print(classList) #['C', 'D', 'E', 'F']
    print('\n'*2)
    
    # 互换两个元素
    num1 = 10;   num2 = 20
    print(num1,num2) #10 20
    [num1,num2] = [num2,num1]
    print(num1,num2) #20 10
    print('\n'*2)
    
    # 查找一个元素是否在列表里
    classList = ['A','B','C','D','E','F']
    print('A' in  classList)# 返回bool值 #True
    print('\n'*2)
    
    # 查找列表里的最大值
    classList = ['A','B','C','D','E','F']
    print(max(classList)) #F
    print(min(classList)) #A
    print('\n'*2)
    
    # 统计某元素出现的次数
    myList = ['a','b', 'c','d','s','a','a']
    print(myList.count('a')) #3
    print('\n'*2)
    
    # 列表中追加值
    myList.extend('值')
    myList.extend(['金','银'])
    print(myList)#['a', 'b', 'c', 'd', 's', 'a', 'a', '值', '金', '银']
    print('\n'*2)
    
    # 插入值 并且指定位置(下标)要填充的值
    myList = ['0','1','2','3']
    print(myList)#['0', '1', '2', '3']
    myList.insert(0,'A')
    print(myList)#['A', '0', '1', '2', '3']
    myList.insert(0,['m','n'])
    print(myList)#[['m', 'n'], 'A', '0', '1', '2', '3']
    print('\n'*2)
    
    # 将最后一个值弹出
    myList = ['1','2','3','4']
    myList.pop()
    print(myList)#['1', '2', '3']
    # 将指定位置的值弹出
    myList.pop(0)
    print(myList)#['2', '3']
    print('\n'*2)
    
    # 移除第一个匹配上的元素
    myList = ['1','2','3','4','2','2','2']
    myList.remove('2')
    print(myList)#['1', '3', '4', '2', '2', '2']
    
    # 清空列表
    myList = ['1','2','3','4','2','2','2']
    myList.clear()
    print(myList)#[]
    print('\n'*2)
    
    # 列表追加值
    myList = ['a']
    myList.append('b')
    print(myList)#['a', 'b']
    print(myList.index('a'))#0
    # print(myList.index('z')) # 不存在就报错了
    print('\n'*2)
    
    # 升序排列列表
    myList = [9,2,73,4,72,8]
    myList.sort()
    print(myList)#[2, 4, 8, 9, 72, 73]
    print('\n'*2)
    
    # 翻转列表
    myList = [54,57,8,9,5,23,4,5,76,1]
    myList.reverse()
    print(myList)#[1, 76, 5, 4, 23, 5, 9, 8, 57, 54]
    print('\n'*2)
    
    
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @Time    : 2018/3/1 13:34
    # @Author  : PXQL
    # @Site    : 
    # @File    : 
    # @Software: PyCharm Community Edition
    # =====================================================
    # 深、浅 拷贝  <>
    
    
    import copy
    
    
    # # 深拷贝 浅拷贝
    # num1 = 5
    # num2 = num1
    # num2 = 10
    # print(id(num1))
    # print(id(num2))
    # print('\n'*2)
    
    
    # 在 python 里不是以变量来存储地址 而是以内容 相同内容指向一个地址
    # 浅拷贝指向一个地址
    myList = [1,2,3,4,5,6,7,8,9]
    myList2 = myList
    print(id(myList))#1993309771656
    print(id(myList2))#1993309771656
    myList2[0] = 'a'
    print(id(myList))#1993309771656
    print(id(myList2))#1993309771656
    print('\n'*2)
    
    
    # 深拷贝 真正意义的拷贝
    myList3 = ['a','b','c','d','e']
    myList4 = myList3.copy()
    myList4[0] = '1'
    print(id(myList3))#1993309771848
    print(id(myList4))#1993309773128
    print(myList3)#['a', 'b', 'c', 'd', 'e']
    print(myList4)#['1', 'b', 'c', 'd', 'e']
    print('\n')
    
    
    ## copy 模块里的 copy.copy 仅仅是拷贝了一层,也叫做浅拷贝
    myList5 = ['a','b','c','d','e',['0','1','2']]
    myList6 = myList5.copy()
    myList6[5][0] = 'G'
    print(id(myList5));
    print(myList5)
    print(id(myList6));
    print(myList6)
    print('\n')
    # --- 打印结果 ---
    # 2612034362568
    # ['a', 'b', 'c', 'd', 'e', ['G', '1', '2']]
    # 2612034362504
    # ['a', 'b', 'c', 'd', 'e', ['G', '1', '2']]
    
    
    myList = ['1','a','f']
    myList2 = copy.copy(myList)
    myList[0] = 'd'
    print(myList)
    print(myList2)
    print('\n')
    # --- 打印结果 ---
    # ['d', 'a', 'f']
    # ['1', 'a', 'f']
    # --- 打印结果 ---
    
    myList = ['1','a','f',['df','fg']]
    myList2 = copy.copy(myList)
    myList[3][0] = 'd'
    print(myList)
    print(myList2)
    print('\n')
    # --- 打印结果 ---
    # ['1', 'a', 'f', ['d', 'fg']]
    # ['1', 'a', 'f', ['d', 'fg']]
    # --- 打印结果 ---
    
    
    # 深拷贝  真正字面意义上的拷贝
    myList = ['1','a','f',['df','fg']]
    myList2 = copy.deepcopy(myList)
    myList[3][0] = 'www'
    print(myList)
    print(myList2)
    print('\n')
    # --- 打印结果 ---
    # ['1', 'a', 'f', ['www', 'fg']]
    # ['1', 'a', 'f', ['df', 'fg']]
    # --- 打印结果 ---
    
    
    values = [1,2,3]
    values[1] = values
    # 打印 [1, [...], 3]  打印的结果,说明了 (values[1] = values)没有赋值,只是设置了引用
    print(values)
    
    
    values = []
    values = [1,2,3]
    values[1] = values[:]
    # 打印 [1, [1, 2, 3], 3]
    print(values)
    
    #  python 里的对象复制  只有三种 切片、深拷贝、浅拷贝
    

    元组

    
    # Python的元组与列表类似,不同之处在于元组的元素不能修改。
    # 元组使用小括号,列表使用方括号。
    # 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。
    
    tuple1 = (1,2,3)
    print(type(tuple1))
    tuple2 = ('dsds',"iueriwur564",5466,1.6889,7+8)
    tuple3 = '1','2','3','4',"5",45,23,1010
    print(type(tuple3))
    # --- 打印结果 ---
    # <class 'tuple'>
    # <class 'tuple'>
    # --- 打印结果 ---
    
    # 创建空的元组
    tup = ()
    print(type(tup))
    # --- 打印结果 ---
    # <class 'tuple'>
    # --- 打印结果 ---
    
    # 元组中只包含一个元素时,需要在元素后面添加逗号
    tup1 = (2)
    print(type(tup1))
    tup1 = (2,)
    print(type(tup1))
    # --- 打印结果 ---
    # <class 'int'>
    # <class 'tuple'>
    # --- 打印结果 ---
    
    # 元组的值是不能进行修改的
    tup1 = (1,2,3)
    # tup1[0] = 45  # 将要报错,原因是不能修改元组的值
    print(tup1)
    # 元组的值不能修改,但是元组内部包含其他层的嵌套的时候,我们可以修改嵌套的值,原因是其它层在这里只是存储的地址
    tup2 = (1,4,5,['a','b'])
    print(tup2)
    tup2[-1][0] = 'http://www.baidu.com'
    print(tup2)
    # --- 打印结果 ---
    # (1, 4, 5, ['a', 'b'])
    # (1, 4, 5, ['http://www.baidu.com', 'b'])
    # --- 打印结果 ---
    
    #可以根据下标取值  也可以下标切片截取 与字符串和列表一样
    #也有+ 和 *
    tup1 = (1,2)
    tup2 = (3,4)
    print(tup1+tup2)
    print(tup1*2)
    # --- 打印结果 ---
    # (1, 2, 3, 4)
    # (1, 2, 1, 2)
    # --- 打印结果 ---
    
    # del tuple1 #不可以删除指定下标值  可以直接干掉所有的
    tup1 = (1,2)
    # del tup1[0]  # 报错
    del tup1
    # print(tup1) # 报错
    
    
    #判断元素是否存在于元组中
    # print(3 in tuple1)
    
    tup1 = (1,2,3)
    print(3 in tup1)
    print(100 in  tup1)
    # --- 打印结果 ---
    # True
    # False
    # --- 打印结果 ---
    
    

    集合

    
    # 描述
    # set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。
    # 语法
    # set 语法:
    # class set([iterable])
    # 参数说明:
    # iterable -- 可迭代对象对象;
    
    # set() 函数创建一个无序不重复元素集就叫做 集合
    
    
    set1 = {4}
    print(type(set1)) #<class 'set'>
    
    #  是定义一个空字典
    set1 = {}
    print(type(set1)) #<class 'dict'>
    
    #  是定义一个空集合
    set1 = set()
    print(type(set1)) #<class 'set'>
    
    # 不重复的序列
    set1 = {1,1,2}
    print(set1)
    
    # 将列表里的去重
    myList = [1,1,3,4,5,6,6,6,6,7,7]
    set2 = set(myList)
    print(set2)
    
    # 集合的运算
    set1 = {'a','b','c'}
    set2 = {'a','d','e','f','g','h'}
    # 取差值
    set3 = set1 - set2
    print(set3) #{'b', 'c'}
    # 取并集
    print(set1|set2) #{'f', 'd', 'b', 'e', 'h', 'g', 'c', 'a'}
    # 取交集
    print(set1&set2) #{'a'}
    # 不同时存在的
    print(set1^set2) #{'e', 'b', 'h', 'd', 'c', 'f', 'g'}
    
    # 不能使用下标 没有 + *
    set4 = {1,2,3,4,5}
    print(set4)#{1, 2, 3, 4, 5}
    
    

    字典

    
    #字典类型 是有 key->value的形式组成  并且查找速度极快
    #定义  {}
    #key是由字符串和整数 组成
    # 键值成对出现 key是唯一的
    
    dict = {'name':'张三','age':18}
    dict2 = {'address':"河南省郑州",'phone':'17718889999'}
    # dict3 = dict + dict2  # 报错,字典不能相加 ,但是可以 更新 uppdate
    dict3 = dict.update(dict2)
    print(dict3)  # None  dict.update(dict2) 执行后返回了 None
    print(dict)  #  {'name': '张三', 'age': 18, 'address': '河南省郑州', 'phone': '17718889999'}
    
    dict =  {'name': '张三', 'age': 18, 'address': '河南省郑州', 'phone': '17718889999'}
    # 长度 是 键值对的个数
    print(len(dict))  # 4
    # 查找值
    print(dict["address"])  # 河南省郑州
    dict4 = {110:'No'}
    # 把 dict4 合并到 dict 里; dict4 重复的 key 的 value 会将 dict 里的 key 的 value 覆盖掉
    dict.update(dict4)
    print(dict) #{'name': '张三', 'age': 18, 'address': '河南省郑州', 'phone': '17718889999', 110: 'No'}
    dict4 = {110:"YES"}
    dict.update(dict4)
    print(dict) #{'name': '张三', 'age': 18, 'address': '河南省郑州', 'phone': '17718889999', 110: 'YES'}
    #  如果为没有的 key 赋值 value 则会先将 key 插入,然后再赋值 value
    dict['safe'] = 'YES'
    print(dict) #{'name': '张三', 'age': 18, 'address': '河南省郑州', 'phone': '17718889999', 110: 'YES', 'safe': 'YES'}
    
    
    
    
    

    二、类型转换

    str1 = str(10.45)
    str2 = float('100')
    print(str1)#10.45
    print(str2)#100.0
    
    
    set2 = set('12.5465665')
    print(set2)#{'5', '2', '1', '4', '.', '6'}
    print('\n'*2)
    
    
    t1 = ('张华','李白','小乔','大乔')
    classList = list(t1)
    tup = tuple(t1)
    print(t1);#('张华', '李白', '小乔', '大乔')
    print(type(t1))#<class 'tuple'>
    print(classList);#['张华', '李白', '小乔', '大乔']
    print(type(classList))#<class 'list'>
    print(tup);#('张华', '李白', '小乔', '大乔')
    print(type(tup))#<class 'tuple'>
    
    # 将列表转为 字典 <注意格式>
    list1 = [('name','张三'),('age',18)]
    dic = dict(list1)
    print(dic)#{'name': '张三', 'age': 18}
    print(type(dic))#<class 'dict'>
    list2 = ['a','b','c','d']
    # dic = dict(list2) #报错 格式错误 不可以转
    
    
    # 将集合转为 字典 <注意 格式>
    set1 = {('name','张三'),('age',18),('address','郑州')}
    dic1 = dict(set1)
    print(dic1)#{'age': 18, 'name': '张三', 'address': '郑州'}
    print(type(dic1))#<class 'dict'>
    set2 = {'a','b','c','d'}
    # dic3 = dict(set2) #报错 格式错误不可以转
    
    

    三、运算符

    1) 赋值运算符

    =
    

    2)算数运算符

    + - * / %  
    **  求次方
    // 求商 (10//3  ===> 3)
    

    3)复合运算符

    +=  # num += 1  === num=num+1
    -=
    *=
    /=
    %=
    **=
    //=
    

    4) 比较运算符

    > < >= <= != ==
    3>4
    比较运算符组成的表达式 返回值真和假
    
    

    5)逻辑运算符

    and  与  (短路原则 第一个为假直接结束)
    逻辑与:
        表达式1    表达式2   结果
        真           真       真
        假           真       假
        假           假       假
    or  或
    逻辑或
        表达式1    表达式2   结果
        真           真       真
        假           真       真
        真           假       真
        假           假       假
        
    not 非
    逻辑非
        只要有一个表达式为真 即为假
        表达式   整个表达式
        真           假
        假           真
    
    

    6)成员运算符

    in  
    not in
    一般用于列表 元组 集合 字典的元素判断中
    如果是字典按照键值查找 不是按照值
    
    

    优先级:不记得优先级就加上小括号

    相关文章

      网友评论

          本文标题:2018-03-01

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