zoukankan      html  css  js  c++  java
  • python4

    元组

    定义

    不可变列表

      类型:tuple

    不能修改,只能统计和获取数据操作而已,如果做其他的操作就会报错:TypeError: 'tuple' object is not callable

    创建元组

    ages = (11,22,33,44,55,66)
    
    
    ages
    = tuple(11,22,33,44,55,66)

    元组与列表

    基本操作

    1、统计:count

    特性:

    count(),括号里面一定要填写元素,如果为空的话会报以下错误:TypeError: count() takes exactly one argument (0 given)

    返回的结果为统计元素的个数,如果元素不存在的话,返回的结果是0

    r = (1,2,3,4,5,5,5,5)
    r1 = r.count(7)
    print(r1)
    
    #运行结果:4
    #在count(),括号里面必需填写元素,如果元素不存在的话返回0,如果元素存在的话会返回元组里面有多少个元素

    2、索引:index

    特性:

    index(),括号里面一定要填写元素,如果为空的话会报错:TypeError: index() takes at least 1 argument (0 given)

    返回结果为该元素的位置

    如果有重复的元素的话,返回的永远是第一个元素的位置

    如果元素不错在的话会报错:ValueError: tuple.index(x): x not in tuple

    r = (1,2,3,4,5,5,5,5)
    r1 = r.index(2)
    print(r1)
    
    #运行结果:1
    #在index(),括号里面需要填写元素,并且返回的结果是该元素在元组当中的位置,如果有重复的元素的话,则是返回第一个元素的位置就停止了。不可为空

    备注:

    1)可以通过pycharm定义一个元组,在查看全部可以使用的基本操作;两个下划线的表示的是内部的方法,我们不能使用。

    2)应用场景:程序不想被人修改的时候(统计全部国家的一个列表,已经是一个定数了,修改的可能性不大。)


     数据运算

    算数运算

    1、取模:%    返回除数的余数

    应用场景:如上面的图片,奇数是白色的背景色,偶数是灰色的背景色

    print(10 % 2)
    print(11 % 2)
    
    # 结果
    #0 
    #1

    2、取整数://

    print(10.3 // 3)    #取整数
    print(10.3 / 2)     #除法
    
    # 结果
    #3.0
    #5.15

    比较运算

    <> 与!=一样,但是一般使用的是!=

    赋值运算

    逻辑运算

    and:全部为真即为真,有一个假即为假

    a,b,c = 3,5,7
    print(a >2 and c <7)
    print(a >2 and c <8)
    print(a >2 and c <7 and b > 4)
    
    # 结果
    #False   真假=假
    #True    真真=真
    #False   真假假 = 假
    #假假 = 假,真假 = 假  假真 = 真  真真 = 真  
    #可以加多个and(一般是使用2个)必须全部为真才是真

    or:只要有一个为真就为真,全部为假才是假

    a,b,c = 3,5,7
    print(a >2 and c <8 and b > 4 or c == 8)
    print(a >2 and c <7 and b > 4 or  c == 8)
    
    # 结果
    #True   
    #False    
    #只要有一个为真就为真,必须两个都是假才是假
    #a >2 and c <8 and b > 4 为真  c == 8 为假  所以为真
    #a >2 and c <7 and b > 4  为假   c == 8 为假  所以为假 

    not:   if  not  后面的条件如果为真的话则执行print语句,为假的话不执行(还在在疑问?????)

    a,b,c = 3,5,7
    if not a >2 and c <8 and b > 4 or c == 7:print("ddddd")
    if not  a >2 and c <7 and b > 4 or  c == 8:print('dddd')
    
    # 结果
    #dddd
    #
    #if not  后面的条件如果为真的话则执行print语句,为假的话不执行
    
    
    a = [1,2,3,4]
    if 1 not  in a:print('hahhah')
    if 32 not in a :print('hahahhah')
    # 结果
    #
    #hahahhah
    
    
    a = '333'
    if not a.isdigit():print('ddds')
    print(type(a))
    print(a.isdigit())
    
    #结果:
    #<class 'str'>
    #True

    成员运算

     

    身份运算

    is

    a = [1,2,3,4]
    print(type(a))
    print(a is list)
    print(type(a) is  list)

    # 结果 #<class 'list'> #False #True

    位运算

    二进制

      1、二进制是计算机里最小的单位,只有两个值:分别是0或1

      2、计算机里面为什么用0和1来表示最小的单位?

    因为计算机最底层是通过电流来实现的,通过电流来表示数字、文字等,但是电流只有开、关两种情况,一个动作只能代表一个信息。

    电流代表最简单的信息,通过0和1来传递更新的信息。

              

    最大:1024

    规律:前面的数加起来比后面的这个数少1,例如要用第五位的16来表示前面四个数的话16-1 = 8+4+2+1

    电路也是只能用开关来表示两种状态,关 = 0 ,开 =1

    计算机的加法  

     

    计算机中能表示的最小单位:一个二进制位(0或1)=1bit

    计算机中能存储的最小单位:1个二进制位(表示一个信息)

    人们为了看起来比较容易,将二进制分组成8个二进制位一组:8 bit =1byte(字节)

    计算机任何一个字符至少用1个字节存储

    1024byte = 1kbyte(下载用的)

    1024kbyte = 1mbyte

    1024mb = 1gb

    1024gb = 1tb

    &:与、and 运算

    a = 60   #60 = 0011 1100
    b = 13   #13 = 0000 1101
    print(a & b)
    
    #结果
    #12   0000 1100

    1&1 =1    1&0=0   0&1=0   0&0=0

    |:或运算

    a = 60   #60 = 0011 1100
    b = 13   #13 = 0000 1101
    print(a | b)
    
    #结果
    #61   0011 11001

    0|0=0   1|0=1   0|1=1    1|1=1

    ^  :异或运算

    a = 60   #60 = 0011 1100
    b = 13   #13 = 0000 1101
    print(a ^ b)
    
    #结果
    #49   0011 0001 

    0^0=0   1^1=0  (相同为0)

    0^1=1    1^0=1   (不同为1)

    ~:按位取反运算--取一个值的反数

    a = 60   #60 = 0011 1100
    print(~a)
    
    #结果
    #-61    195-256=-61 

    对60取反得到二进制1100 0011=195    256-195=-61

    <<:左移

    左移1 = 60*2

    左移2 = 60*4

    a = 60   #60 = 0011 1100
    print(a<<2)
    
    #结果
    #240 

    >>:右移

    右移1 = 60/2

    右移2 = 60/4 

    a = 60   #60 = 0011 1100
    print(a>>2)
    
    #结果
    #15

    运算符优先级

     


     while死循环(loop)

    定义

    有一种循环叫死循环,一经触发,就永远的运行着,但是计算机的内存是有限的,所以如果内存不够的话就不会再循环了。

    创建死循环

    while  True:只要为真,会一直运行下去,没运行一次就打印并且自动加1

    count = 0
    while True:
        print("hahahhha",count)
        count +=1

    应用

    达到一定的条件停止循环

    如果count加到100的话就停止。

    break:跳出整个循环

    continue:运行到continue的话下面的程序就不走了,直接接上下一个循环

    count = 0
    while True:
        print("循环啊循环啊循环",count)
        count +=1
        if count == 100:
            print("不循环啦")
            break
    
    
    
    #打印结果
    '''
    循环啊循环啊循环 0
    循环啊循环啊循环 1
    ....0-99不列出啦,太长了
    循环啊循环啊循环 94
    循环啊循环啊循环 95
    循环啊循环啊循环 96
    循环啊循环啊循环 97
    循环啊循环啊循环 98
    循环啊循环啊循环 99
    不循环啦
    '''

    2、选择性循环打印

    count = 0
    while True:
        count +=1    #需要放到这个位置,不能放在continue后面,因为这样的话就不会自加1了。
        if count > 2 and count <10:
            continue
        print("循环啊循环啊循环",count)
        if count == 15:
            print("不循环啦")
            break
    
    
    
    #打印结果
    '''
    循环啊循环啊循环 1
    循环啊循环啊循环 2
    循环啊循环啊循环 10
    循环啊循环啊循环 11
    循环啊循环啊循环 12
    循环啊循环啊循环 13
    循环啊循环啊循环 14
    循环啊循环啊循环 15
    不循环啦
    '''

    字典

    从13亿中国人当中找出王小华

    方法一

    列表

    1、取值的话,需要先知道元素的索引值

    2、如果不知道索引值,需要先查询元素的索引值在进行取值

    3、思路:

    王小华会有对应的很多信息(身份证号、籍贯、性别等信息)

    通过大列表嵌套下列表将王小华的其它信息包含进去

    name = [1,[123988298,'wangxiaohua','shandong'],56,456,'hjjjj']
    print(name.index(123988298))
    
    
    #结果:
    #ValueError: 123988298 is not in list
    #通过index方法来查找的话只能查找到大列表里面的元素,对于嵌套在大列表的小列表并不能查找到。

    方法二、通过for循环(不具备去重功能,容易出现循环错误;如果身份证号码或者其它信息重复的话不具备去重的效果)

    方法三、字典

    1、字典里面可以嵌套:字典、列表等元素

    2、去重功能--随机

    id_db = {
        347917737977890:{
            'name':'wangxiaohua',
            'age':20,
            'addr':'shanghai',
        },
        347917737977890:{
            'name':'wangxiaohong',
            'age':20,
            'addr':'shanghai',
        },
        347917734392438: {
            'name': 'wangdaha',
            'age': 20,
            'addr':'beijing',
        },
    }
    print(id_db)
    
    #结果: #{347917737977890: {'name': 'wangxiaohong', 'age': 20, 'addr': 'shanghai'}, # 347917734392438: {'name': 'wangdaha', 'age': 20, 'addr': 'beijing'}} #小华跟小红的身份证是重复的,所以随机去掉了一个

    结构

    1、key:value    结构

    2、key 必须是唯一的,如果key重复的话会随机显示一个

    3、中括号开始--中间是key:value对,value里面可以是任何东西:字典、字符串、列表等 --中括号结束

    4、嵌套里面的小字典也是 key:value对,每个key:value对用逗号隔开 

     

    基本操作

    1、取值--通过key取(唯一性)

    id_db = {
        347917737977890:{
            'name':'wangxiaohua',
            'age':20,
            'addr':'shanghai',
        },
        347917737977893:{
            'name':'wangxiaohong',
            'age':20,
            'addr':'shanghai',
        },
        347917734392438: {
            'name': 'wangdaha',
            'age': 20,
            'addr':'beijing',
        },
    }
    print(id_db[347917737977890])
    
    
    #结果: #{'addr': 'shanghai', 'age': 20, 'name': 'wangxiaohua'} #取得是347917737977890对应的value值

    2、修改

    id_db = {
        347917737977890:{
            'name':'wangxiaohua',
            'age':20,
            'addr':'shanghai',
        },
        347917737977893:{
            'name':'wangxiaohong',
            'age':20,
            'addr':'shanghai',
        },
        347917734392438: {
            'name': 'wangdaha',
            'age': 20,
            'addr':'beijing',
        },
    }
    
    id_db[347917737977890]['name'] =  'wangwang'
    print(id_db[347917737977890])
    
    
    
    #结果:
    #{'name': 'wangwang', 'addr': 'shanghai', 'age': 20}
    #取得是347917737977890对应的value值,将name修改成wangwang

    3、添加值

    id_db = {
        347917737977890:{
            'name':'wangxiaohua',
            'age':20,
            'addr':'shanghai',
        },
        347917737977893:{
            'name':'wangxiaohong',
            'age':20,
            'addr':'shanghai',
        },
        347917734392438: {
            'name': 'wangdaha',
            'age': 20,
            'addr':'beijing',
        },
    }
    
    id_db[347917737977890]['wife'] =  'hehe'
    print(id_db[347917737977890])
    
    
    
    #结果:
    #{'addr': 'shanghai', 'age': 20, 'wife': 'hehe', 'name': 'wangxiaohua'}
    #347917737977890对应的value值里面添加wife key:value对

    4、删除

      del删除  

    id_db = {
        347917737977890:{
            'name':'wangxiaohua',
            'age':20,
            'addr':'shanghai',
        },
        347917737977893:{
            'name':'wangxiaohong',
            'age':20,
            'addr':'shanghai',
        },
        347917734392438: {
            'name': 'wangdaha',
            'age': 20,
            'addr':'beijing',
        },
    }
    
    del id_db[347917737977890]['name']
    print(id_db[347917737977890])
    
    
    
    #结果:
    #{'addr': 'shanghai', 'age': 20}

      POP删除

    id_db = {
        347917737977890:{
            'name':'wangxiaohua',
            'age':20,
            'addr':'shanghai',
        },
        347917737977893:{
            'name':'wangxiaohong',
            'age':20,
            'addr':'shanghai',
        },
        347917734392438: {
            'name': 'wangdaha',
            'age': 20,
            'addr':'beijing',
        },
    }
    
    id_db[347917737977893].pop("age")
    print(id_db[347917737977893])
    
    
    
    #结果:
    #{'addr': 'shanghai', 'name': 'wangxiaohong'} 

    5、copy:与列表中的copy一样

    6、clear:清空操作

    7、获取:get

      查询的key不存在

    id_db = {
        347917737977890:{
            'name':'wangxiaohua',
            'age':20,
            'addr':'shanghai',
        },
        347917737977893:{
            'name':'wangxiaohong',
            'age':20,
            'addr':'shanghai',
        },
        347917734392438: {
            'name': 'wangdaha',
            'age': 20,
            'addr':'beijing',
        },
    }
    
    print(id_db.get(3479177324893))
    
    
    
    #结果:
    #None     key:3479177324893对应是没有value的,所以打印出来是none
    
    
    #如果没有对应的value会直接报错 id_db = { 347917737977890:{ 'name':'wangxiaohua', 'age':20, 'addr':'shanghai', }, 347917737977893:{ 'name':'wangxiaohong', 'age':20, 'addr':'shanghai', }, 347917734392438: { 'name': 'wangdaha', 'age': 20, 'addr':'beijing', }, } print(id_db[3479177324893]) #结果: #KeyError: 3479177324893

    8、update:更新

    id_db = {
        1111:'1',
        2222:'2',
    }
    
    id_db2 = {
        3333:'3',
        4444:'4',
        5555:'5'
    }
    
    id_db.update(id_db2)     #将id_db2字典里面的东西更新到id_db字典里面去
    print(id_db)
    
    
    #结果:
    # {5555: '5', 4444: '4', 3333: '3', 2222: '2', 1111: '1'}
    #将id_db2更新到id_db里面,如果id_db里面没有的的话直接添加上去
    
    
    #相同的key,不同的value id_db = { 1111:'1', 2222:'2', } id_db2 = { 1111:'11', 4444:'4', 5555:'5' } id_db.update(id_db2) #将id_db2字典里面的东西更新到id_db字典里面去 print(id_db) #结果:{5555: '5', 4444: '4', 2222: '2', 1111: '11'} #id_db2的value直接覆盖到id_db中

    9、item:将字典变成一个元祖(列表)

    id_db = {
        1111:'1',
        2222:'2',
    }
    print(id_db)
    print(id_db.items())
    
    
    #结果:
    #print(id_db)
    #print(id_db.items())

    10、打印所有的values

    id_db = {
        1111:'1',
        2222:'2',
    }
    print(id_db)
    print(id_db.values())
    
    #结果: #print(id_db) #dict_values(['2', '1'])

    11、打印所有的keys

    id_db = {
        1111:'1',
        2222:'2',
    }
    print(id_db)
    print(id_db.keys())
    
    #结果: #print(id_db) #dict_keys([2222, 1111])

    12、判断对应的字典里是否包含我们想要的身份证号

    适用于python2、python3版本

    id_db = {
        1111:'1',
        2222:'2',
    }
    print(id_db)
    print(999 in id_db)
    
    #结果: #print(id_db) #False #表示在id_db里面没有这个key

    仅仅适用于python2版本

     1 id_db = {
     2     1111:'1',
     3     2222:'2',
     4 }
     5 print(id_db)
     6 print(id_db.has_key(9999))
     7 
     8 #结果:
     9 #print(id_db)
    10 #False    #表示在id_db里面没有这个key

    13、setdefault:添加一个key:value对

     1 #添加一个只有key没有value的,默认value为none
     2 id_db = {
     3     1111:'1',
     4     2222:'2',
     5 }
     6 print(id_db)
     7 id_db.setdefault(9999)
     8 print(id_db)
     9 
    10 #结果:
    11 #print(id_db)
    12 #{9999: None, 2222: '2', 1111: '1'}
    13 
    14 
    15 
    16 #添加key:value对
    17 id_db = {
    18     1111:'1',
    19     2222:'2',
    20 }
    21 print(id_db)
    22 id_db.setdefault(9999,'9')
    23 print(id_db)
    24 
    25 #结果:
    26 #print(id_db)
    27 #{9999: '9', 2222: '2', 1111: '1'}

    14、formkeys

    将列表里面的每一个元素取出来,将其当作一个key存到字典里面,并且对应的value都是dddd

     1 id_db = {
     2     1111:'1',
     3     2222:'2',
     4 }
     5 print(id_db.fromkeys([11,22,33,44],'dddd'))
     6 print(id_db)
     7 print(dict.fromkeys([11,22,33,44],'dddd'))
     8 
     9 
    10 #结果:
    11 #{33: 'dddd', 11: 'dddd', 44: 'dddd', 22: 'dddd'}
    12 #{2222: '2', 1111: '1'}
    13 #{33: 'dddd', 11: 'dddd', 44: 'dddd', 22: 'dddd'}
    14 #通过字典去调用对象里面的方法,只要是字典都可以进行调用这个方法,与是什么字典,没有关系,用默认的字典dict去调用也可以

    15、popitem:随机删除一对key:value对

     1 id_db = {
     2     1111:'1',
     3     2222:'2',
     4     3333:'3',
     5     4444:'4',
     6     5555:'5',
     7 }
     8 
     9 print(id_db)
    10 print(id_db.popitem())
    11 print(id_db)
    12 
    13 
    14 
    15 #结果:
    16 #{5555: '5', 4444: '4', 3333: '3', 2222: '2', 1111: '1'}     #删除之前的
    17 #(5555, '5')   #打印出来被随机删除的key:value对
    18 #{4444: '4', 3333: '3', 2222: '2', 1111: '1'}   #剩余的字典

    16、循环字典

      简单的循环--效率低(需要有一个dict   to  list的转换过程),适合数据量比较小的

     1 id_db = {
     2     1111:'1',
     3     2222:'2',
     4     3333:'3',
     5     4444:'4',
     6     5555:'5',
     7 }
     8 
     9 for k,v in id_db.items():
    10     print(k,v)
    11 
    12 
    13 
    14 #结果:
    15 '''
    16 5555 5
    17 4444 4
    18 3333 3
    19 2222 2
    20 1111 1
    21 '''

      适合数据量较大

     1 id_db = {
     2     1111:'1',
     3     2222:'2',
     4     3333:'3',
     5     4444:'4',
     6     5555:'5',
     7 }
     8 
     9 for key in id_db:
    10     print(key,id_db[key])
    11 
    12 
    13 
    14 #结果:
    15 '''
    16 5555 5
    17 4444 4
    18 3333 3
    19 2222 2
    20 1111 1
    21 '''

    总结

    生成字典的语法-取值-修改-插入-删除指定-取值不报错-取值报错(不使用)-更新-items(不用)-取values(不用)--打印keys--打印values

    判断存在不?--setdefault--fromkeys--popitem(不用)--循环


    set集合 

    创建集合

     1 #方式一
     2 se = {'123','456'}
     3 print(type(se))
     4 
     5 
     6 #结果:<class 'set'>
     7 
     8 #方式二
     9 s = set()
    10 print(s)
    11 
    12 
    13 #结果:set()   创建一个空集合
    14 #自动执行set()类里面的__init__方法
    15 
    16 
    17 
    18 #方式三
    19 li = [22,33,44,55]
    20 s1 = set(li)
    21 s3 = set([2,3,44,55])
    22 print(s1)
    23 print(s3)
    24 
    25 #结果:
    26 # {33, 44, 22, 55}
    27 #{2, 3, 44, 55}
    28 #列表转换成集合

    基本操作

    1、创建空集合

    1 s = set()
    2 print(s)
    3 
    4 
    5 #结果:set()   创建一个空集合
    6 #自动执行set()类里面的__init__方法

    2、add方法

     1 s = set()
     2 s.add(456)
     3 print(s)
     4 
     5 
     6 #结果:{456}
     7 
     8 
     9 
    10 s = set()
    11 s.add(456)
    12 s.add(456)
    13 s.add(456)
    14 s.add(456)
    15 print(s)
    16 
    17 
    18 #结果:{456}
    19 #添加多个一样的元素,只会默认添加一个元素

    3、clear:清除所有的内容

    s3 = set([2,3,44,55])
    print(s3)
    s3.clear()
    print(s3)
    
    #结果:
    # {2, 3, 44, 55}
    #set()

    4、copy(浅拷贝)--类似于列表的浅拷贝,可以具体参照列表的浅copy

    5、difference

    S1中存在S2中不存在的所有元素

    S1进行调用,S2是后面加入的参数

    1 A = {11,22,33}
    2 B = {22,33,66}
    3 
    4 C = A.difference(B)
    5 print(C)
    6 
    7 #结果:{11}
    8 #取A中存在的,B中不存在的。

    6、symmetric_difference

    symmetric:对称

    1 A = {11,22,33}
    2 B = {22,33,66}
    3 
    4 C = A.symmetric_difference(B)
    5 print(C)
    6 
    7 #结果:{66, 11}
    8 #取A中存在的,B中不存在的;取B中存在的,A中不存在的

    5跟6不改变集合A、B的值,是产生新的集合C

    7、difference_update

    1 A = {11,22,33}
    2 B = {22,33,66}
    3 
    4 A.difference_update(B)
    5 print(A)
    6 
    7 #结果:{11}
    8 #取A中存在的B中不存在的元素,更新到A集合当中去,如果B中有A集合的元素直接去掉

    8、symmetric_difference_update

    1 A = {11,22,33}
    2 B = {22,33,66}
    3 
    4 A.symmetric_difference_update(B)
    5 print(A)
    6 
    7 #结果:{66,11}
    8 #集合A、B中都不相同的元素到A中去

    7跟8改变集合A的值

    9、discard:移除指定元素

    1 A = {11,22,33}
    2 
    3 A.discard(11)
    4 print(A)
    5 
    6 #结果:{33,22}
    7 #移除指定的元素

    移除的指定元素不存在,照原样打出,不会报错

    1 A = {11,22,33}
    2 
    3 A.discard(55)
    4 print(A)
    5 
    6 #结果:{33, 11, 22}
    7 #原样打出

    10、POP删除(不太用得着)

     1 #方法里面不能带参数
     2 A = {11,22,33}
     3 A.pop(22)
     4 print(A)
     5 
     6 
     7 
     8 #结果:TypeError: pop() takes no arguments (1 given)
     9 
    10 
    11 
    12 A = {11,22,33}
    13 A.pop()
    14 print(A)
    15 
    16 
    17 #结果:{11, 22}
    18 #随机删除某一个元素
    19 
    20 
    21 A = {11,22,33}
    22 C = A.pop()
    23 print(C)
    24 
    25 
    26 #结果:33
    27 #随机删除某一个元素,并且随机删除的元素会直接赋值给C

    11、remove删除--与discord一样,但是移除的元素不存在的话会报错(推荐使用discord)

    12、intersection:取两个集合的交集

    A = {11,22,33}
    B = {55,66,33}
    C = A.intersection(B)
    print(C)
    
    
    #结果:{33}
    #取两个集合的交集

    13、intersection_update

    A = {11,22,33}
    B = {55,66,33}
    A.intersection_update(B)
    print(A)
    
    
    #结果:{33}
    #取两个集合的交集并更新到到A集合中去

    14、isdisjoint

    判断两个集合是否是并集,是的话打印出True,不是的话打印出False

    A = {11,22,33}
    B = {55,66,33}
    print(A.isdisjoint(B))
    
    #结果:False
    
    
    
    A = {11,22,333}
    B = {55,66,33}
    print(A.isdisjoint(B))
    
    #结果:True

    15、issuperset:判断是否有父序列

    A = {11,22,33}
    B = {22,33}
    print(A.issuperset(B))
    
    #结果:True
    #存在包含关系,打印出True
    
    
    
    A = {11,22,333}
    B = {11,66,33}
    print(A.issuperset(B))
    
    #结果:False

    16、取并集:union

    A = {11,22,33}
    B = {22,33}
    C = A.union(B)
    print(C)
    
    #结果:{33, 11, 22}

    17、update:批量添加元素

    接收一个可以被for 循环,可迭代的元素--批量添加元素

    添加多个元素可以通过列表的方法,内部自动执行add方法添加到集合里面

    for循环字符串:一个字符一个字符进行循环

    add方法:一个元素一个元素添加

    可迭代元素:字符串、列表、数字、元组

    A = {11,22,33}
    li = [44,22,66,77]
    A.update(li)
    
    print(A)
    
    #结果:{33, 66, 11, 44, 77, 22}
    
    
    #添加字符串
    A = {11,22,33}
    li = 'tangtang'
    A.update(li)
    
    print(A)
    
    #结果:{33, 't', 11, 'a', 'n', 22, 'g'}

    拓展

    双下划线方法:自动执行

    li = [11,22,33]   #list __init__
    li()              #list __call__
    li[0]              #list __getitem__
    li[0] = 123         #list __setitem__
    def li[1]           #list __delitem__
    
    #li是一个对象,类是list 如果在对象后面加括号的话就会自动执行python定死的list对象方法(含下划线的方法)

     set函数练习

    需求

    1、假设做一个资产采集的功能,在资产采集之前在内存里已经有保存一定的数据

    2、第一个槽位插了一块8GB的内存,第二块:4GB,第三块:没有,第四块:2GB

    3、将第一个内存条换成4GB的内存,拔了第四块内存插到第三个位置

    4、将拔插的内存条位置进行更新

    需求分析

    1、利用字典来创建内存条

    2、 将第一块8GB内存条换成4GB内存条

      old里面有的new里面没有的--删除

      new里面有的old里面没有的添加到old里面

      new、old里面都有的,更新对应的值

     

    #应该删除哪几个槽位?
        #old_dict存在,new_dict不存在的key
        #之前的操作只能操作元素,不能直接操作字典,所以需要将字典中的key转换成集合
        #执行删除操作
    
    old_dict = {
        '#1':8,
        '#2':4,
        '#4':2,
    }
    new_dict = {
        '#1':4,
        '#2':4,
        '#3':2,
    }
    
    #old_kyes = old_dict.keys()
    #old_set = set(old_kyes)
    
    #new_keys = new_dict.keys()
    #new_set  =  set(new_keys)
    new_set = set(new_dict.keys())
    old_set = set(old_dict.keys())
    
    remove_set = old_set.difference(new_set)
    
    #添加
    add_set = new_set.difference(old_set)
    #更新(找两个集合的交集)
    updeta_set = old_set.intersection(new_set)
  • 相关阅读:
    cocos2d-x ios 设置横屏/竖屏(全)
    决策树之ID3算法实现(python)
    基于Spring开发的DUBBO服务接口测试
    Mac电脑下配置maven环境变量
    Mac Eclipse+Maven+TestNg+ReportNg 生成测试报告
    TestNG+Maven+IDEA环境搭建
    115个Java面试题和答案——终极列表(上)
    115个Java面试题和答案——终极列表(下)
    阿里巴巴常考面试题及汇总答案
    阿里面试回来,想和Java程序员谈一谈
  • 原文地址:https://www.cnblogs.com/little-turtle/p/6363691.html
Copyright © 2011-2022 走看看