zoukankan      html  css  js  c++  java
  • 数据类型

    整数(int) ,字符串(str),布尔值(bool),列表(list),元组(tuple),字典(dict),集合(set).

    0、基本数据类型:

    ASCII:1个字节表示,包含字母、数字、特殊字符;

    Unicode :开始是16位,现在升级以后是32位;

    utf-8:最少用一个字节表示,英文用1个字节

                                                  欧洲用2个字节

                                                  中文用3个字节表示

    gbk:中文用2个字节,英文用1个字节表示

    0.1、 int类型

    int 比较重要的是bit_length():1个数据最少二进制表达位;

    1、字符串类型(str)

    1.1 单双引号木有任何区别,但是下面的情况需要注意,不能随便用单引号:

    msg = "I‘m a teacher’"

    1.2 多引号,就是多行字符串时候用:

    1 msg  = '''
    2 我是中国人
    3 我是广东人
    4 我是广州人
    5 '''
    View Code

    1.3 字符串可以相加及相乘:

     1 m1 = "我要去西藏"
     2 m2 = "唱一曲天路"
     3 m3 = m1 + m2
     4 m4 = m2 * 4
     5 print(m3)
     6 print(m4)
     7 
     8 输出为:
     9 我要去西藏唱一曲天路
    10 唱一曲天路唱一曲天路唱一曲天路唱一曲天路
    View Code

    注意:字符串相加,其实就是进行拼接;但是字符串只能跟字符串进行拼接,不能够与数字进行拼接。

    2、格式化输出

    2.1   %s就是代表字符串占位符,%d是数字占位符,如果是%d则表示必须输入数字。另外如果想表达50%类似这样带%输出的情况,那么在%后面再加一个%,表示转义

    1 msg = "我是%s,年龄%d,目前学习进度为80%%"%('金鑫',18)
    2 print(msg)
    View Code

    2.2 format的三种用法 格式化输出

     1 #format的三种用法 格式化输出
     2 s = '我叫{},今年{},爱好{},再说一下我叫{}'.format('',25,'sport','')
     3 print(s)
     4 name = input('请输入名字:')
     5 s = '我叫{0},今年{1},爱好{2},再说一下我叫{0}'.format(name,25,'sport')
     6 print(s)
     7 name = input('请输入名字:')
     8 s = '我叫{name},今年{age},爱好{hobby},再说一下我叫{name}'.format(age=25,name=name,hobby='sport')
     9 print(s)
    10 
    11 结果:
    12 我叫彭,今年25,爱好sport,再说一下我叫彭
    13 请输入名字:彭
    14 我叫彭,今年25,爱好sport,再说一下我叫彭
    15 请输入名字:彭
    16 我叫彭,今年25,爱好sport,再说一下我叫彭
    View Code

     3、字符串的索引及切片 

    isdigit():判定是否为全部是数字, 返回bool值
    isapha():
    isnumpha():
    startswith:判定以什么开头;

    endswith:判定以什么结尾;
    title :首字母大写
    center():居中,不够的空白或者指定字符填充;
    strip()lstrip rstrip:
    split:
    format :格式化输出

    repalce:字符串替换,repalce(old,new,count)

    expandtabs:对于s = 'peng\tjun'中,自动在\t处的左边补8个空格;

    find : 找出指定字符的下标,index = content.find('+')

    capitalize():把首字母改为大写。

     1 #字符串的索引及切片
     2 
     3 s = "pengJunFei"
     4 s1 = s.capitalize() #首字母大写
     5 print(s1)
     6 s2 = s.upper() #全部转为大写
     7 s3 = s.lower() #全部转为小写
     8 print(s2) #
     9 print(s3)
    10 
    11 s4 = "PengJunFei"
    12 s5 = s4.swapcase() #大小写翻转
    13 print(s5)
    14 
    15 s6 = "peng*jun fei-123&abcd$rrrr%ddfef"
    16 s61 = s6.title() #把空格/特殊字符隔开的字符串首字母转为大写
    17 print(s61)
    18 
    19 s7 = "jun"
    20 s71 = s7.center(20,"*") #把目标字符串用相应的字符居中,没有第1个参数的话,则默认为空格。
    21 print(s71)
    22 
    23 s8 = "peng\tjunfei\t555广东" #自动把前面的字符补足8位
    24 s81 = s8.expandtabs()
    25 print(s81)
    26 
    27 s9 = "peng广东junfei"
    28 s92 = len(s9) #计算字符串长度,中文也是按一个来计算。
    29 print(s92)
    30 
    31 s10 = "pengAAceng"
    32 s11 = s10.startswith('pen') #判定字符串是否以xxx为开头
    33 s12 = s10.startswith('g',3,5) #判定字符串的第3个字符开始,第5个字符结束的这一区间是否以'g'开头,其中5可以去掉
    34                               #则默认为到结尾,即顾头不顾尾
    35 print(s11)
    36 print(s12)
    37 
    38 s20 = 'pengJUNfeigaaa'
    39 s21 = s20.find('g') #选择找到相应字符的第1次出现的下标索引
    40 print(s21,type(s21)) #type()是判定变量的数据类型
    41 
    42 
    43 
    44 
    45 
    46 
    47 结果:
    48 Pengjunfei
    49 PENGJUNFEI
    50 pengjunfei
    51 pENGjUNfEI
    52 Peng*Jun Fei-123&Abcd$Rrrr%Ddfef
    53 ********jun*********
    54 peng    junfei  555广东
    55 12
    56 True
    57 True
    58 3 <class 'int'>
    View Code
     1 s20 = 'pengJUNfeigaaa'
     2 s21 = s20.find('g') #选择找到相应字符的第1次出现的下标索引
     3 s22 = s20.index('a') #找字符串中第一个出现所标字符的位置,如果没有则报错
     4 print(s21,type(s21)) #type()是判定变量的数据类型
     5 print(s22)
     6 
     7 
     8 结果:
     9 3 <class 'int'>
    10 11
    View Code
     1 s = "ABCDEFGHIJKLMN"
     2 
     3 s1 = s[0]
     4 print(s1)
     5 s2 = s[4]
     6 print(s2)
     7 s3 = s[0:4] #列表的切片,是顾头不顾尾,即尾那个数不计算在内
     8 print(s3)
     9 
    10 s4 = s[0:-1]#切到倒数第1个
    11 print(s4)
    12 s5 = s[:] #没有指定,则全部
    13 print(s5)
    14 s6 = s[0:]#c从第0开始,一直到结束,其实s5是等价于s6的
    15 print(s6)
    16 
    17 结果:
    18 A
    19 E
    20 ABCD
    21 ABCDEFGHIJKLM
    22 ABCDEFGHIJKLMN
    23 ABCDEFGHIJKLMN
    View Code
    1 s = "ABCDEFGHIJKLMN"
    2 s7 = s[0:0]#就是没有取到任何值
    3 print(s7)
    4 
    5 结果:
    6        #结果为空,没有取到值
    View Code
    1 s = "ABCDEFGHIJKLMN"
    2 s8 = s[0:5:2] #首、尾、步长:0就是首
    3 print(s8)
    4 
    5 结果:
    6 ACE
    View Code
    1 s = "ABCDEFGHIJKLMN"
    2 s9 = s[4:0:-1]
    3 print(s9)
    4 
    5 结果:
    6 EDCB
    View Code
    1 s = "ABCDEFGHIJKLMN"
    2 s10 = s[3::-1]
    3 print(s10)
    4 
    5 结果:
    6 DCBA
    View Code
    1 s = "ABCDEFGHIJKLMN"
    2 s11 = s[3::-2] #反向切,且步长为2
    3 print(s11)
    4 
    5 结果:
    6 DB
    View Code
    1 s = "ABCDEFGHIJKLMN"
    2 s12 = s[-1::-1]#从最后一个反向切,一直切到最开头,步长为1
    3 print(s12)
    4 
    5 结果:
    6 NMLKJIHGFEDCBA
    View Code
    1 s = "ABCDEFGHIJKLMN"
    2 s13 = s[-2::-1]
    3 print(s13) #从倒数第二个开始切,一直切到最开头,步长为1
    4 
    5 结果:
    6 MLKJIHGFEDCBA
    View Code
    1 s = "ABCDEFGHIJKLMN"
    2 s14 = s[::-1]
    3 print(s14)
    4 
    5 结果:
    6 NMLKJIHGFEDCBA
    View Code

    3.1 字符串的前后删除某个字符 strip()、lstrip()、rstrip()

     1 s1 = '   $pengJun###FEI##'
     2 s10 = s1.strip() # 在用户输入中,可以把前后的空格去掉,实际字符中间则删不掉
     3 print(s10)
     4 s11 = s1.strip('$')
     5 print(s11)
     6 s12 = s10.strip('$') #从头尾同时向中间找,找到里面的字符则删除,遇到非要找的字符则停止
     7 print(s12)
     8 s13 = s10.strip('$#')#中间三个###删不掉是因为从尾部往中间遇到了I,挡住了
     9 print(s13)
    10 
    11 #例如
    12 username = input('请输入名字:').strip()
    13 if username == '':
    14     print('输入正确')
    15 
    16 结果:
    17 $pengJun###FEI##
    18    $pengJun###FEI##
    19 pengJun###FEI##
    20 pengJun###FEI
    21 请输入名字:   彭    
    22 输入正确
    View Code
     1 # strip(), 从两边往中间删,遇到非指定要删字符则停止
     2 # rstrip(),从右边往中间删,左边不动
     3 # lstrip(),从左边往中间删,右边不动
     4 
     5 s1 = '&&peng&jun%%*fei***'
     6 s12 = s1.rstrip('%*%')
     7 s13 = s1.lstrip('&*')
     8 print(s12)
     9 print(s13)
    10 
    11 结果:
    12 &&peng&jun%%*fei
    13 peng&jun%%*fei***
    View Code

     3.2 计算字符串中指定字符的个数 count()

    1 s1 = '&&peng&jun%%*fei***'
    2 s11 = s1.count('&')# 查找指定字符的个数
    3 print(s11)
    4 
    5 结果:
    6 3
    View Code

    3.3 把字符串按字符串中某个字符进行分割,一分为二地分割为列表  split()

     1 #splint()是对按指定字符一分为二为列表
     2 s2 = '&& peng& jun%%* fei***'
     3 s21 = s2.split() #按空格一分为二为列表
     4 s22 = s2.split('&')#按&一分为二为列表
     5 print(s21)
     6 print(s22)
     7 
     8 结果:
     9 ['&&', 'peng&', 'jun%%*', 'fei***']
    10 ['', '', ' peng', ' jun%%* fei***']
    View Code
    例子:加法计算器
     1 content = input('请输入加法计算式:').strip()
     2 print(content)
     3 content_conl = content.split('+')
     4 print(content_conl)
     5 sum = 0
     6 for i in content_conl:
     7     sum += int(i)
     8 print(sum)
     9 
    10 结果:
    11 请输入加法计算式:5+8+9   +6
    12 5+8+9   +6
    13 ['5', '8', '9   ', '6']
    14 28
    View Code

    4、布尔值

    1 while True:
    2     pass
    3 
    4 5 
    6 while 1:
    7     pass
    8 
    9 要慢,因为True还得转换为1,增加了这个步骤则更多的耗时。
    View Code

     字符串转为布尔值:bool(str),    如果str为空则为False;如果不为空,哪怕为str里为0,结果为True。

     5、列表(list)

    列表的增删改查

    5.1 增

    append():插入到列表的末尾

     1 #增加append
     2 #列表增加是直接增加,且加什么就是什么,即数字就是数字,加字符串就是字符串
     3 my_list = ['peng','li',"quan",'']
     4 
     5 while 1:
     6     name = input('请输入增加的名字:')
     7     if name.strip().upper() == 'Q':
     8         break
     9     else:
    10         my_list.append(name)
    11 print(my_list)
    12 
    13 结果:
    14 请输入增加的名字:彭
    15 请输入增加的名字:全
    16 请输入增加的名字:钱三
    17 请输入增加的名字:q
    18 ['peng', 'li', 'quan', '', '', '', '钱三']
    View Code

    insert():插入到指定位置,即按索引去添加

    1 my_list = ['peng','li',"quan",'']
    2 my_list.insert(2,'广东')
    3 print(my_list)
    4 
    5 结果:
    6 ['peng', 'li', '广东', 'quan', '']
    View Code

    extend():按可迭代的元素增加,添加到最后,即增加的数据必须是可迭代的,如果只是一个整数则不可增加,因其不可迭代

     1 my_list = ['peng','li',"quan",'']
     2 my_list.extend('abc')
     3 print(my_list)
     4 my_list.extend(['a','123','b,c,d'])
     5 print(my_list)
     6 my_list.extend('h')
     7 print(my_list)
     8 my_list.extend(25)
     9 
    10 结果:
    11 ['peng', 'li', 'quan', '', 'a', 'b', 'c']
    12   File "E:/Python Project/05/Day4/List的增删改查.py", line 26, in <module>
    13 ['peng', 'li', 'quan', '', 'a', 'b', 'c', 'a', '123', 'b,c,d']
    14 ['peng', 'li', 'quan', '', 'a', 'b', 'c', 'a', '123', 'b,c,d', 'h']
    15     my_list.extend(25)
    16 TypeError: 'int' object is not iterable
    View Code

    5.2 删

    pop() :按索引去删除,有返回被删除值,如果没有输入参数则默认删除最后一个

    1 my_list = ['peng','li',"quan",'']
    2 #pop() :按索引去删除,有返回被删除值,如果没有输入参数则默认删除最后一个,
    3 my_list.pop(1)
    4 print(my_list)
    5 
    6 结果:
    7 ['peng', 'quan', '']
    View Code

    remove():按元素去删除,即输入具体要删除的元素

    1 my_list = ['peng','li',"quan",'']
    2 #remove():按元素去删除,即输入具体要删除的元素
    3 my_list.remove('quan')
    4 print(my_list)
    5 
    6 结果:
    7 ['peng', 'li', '']
    View Code

    clear():清空列表

    1 my_list = ['peng','li',"quan",'']
    2 #clear():清空列表
    3 my_list.clear()
    4 print(my_list)
    5 
    6 结果:
    7 []
    View Code

    del  :切片的去删除

    1 my_list = ['peng','li',"quan",'']
    2 #del[] :切片删除
    3 del my_list[0:2]
    4 print(my_list)
    5 
    6 结果:
    7 ['quan', '']
    View Code
    1 my_list = ['peng','li',"quan",'']
    2 #del[] :切片删除
    3 del my_list[2:]
    4 print(my_list)
    5 结果:
    6 ['peng', 'li']
    View Code

    5.3 改

     按索引改:

    1 my_list = ['peng','li',"quan",'']
    2 my_list[0] = 'zhang'
    3 print(my_list)
    4 结果:
    5 ['zhang', 'li', 'quan', '']
    View Code

    按切片改:

    1 my_list = ['peng','li',"quan",'']
    2 #按切片去改
    3 my_list[0:2] = ["a,b,c",'中国']
    4 print(my_list)
    5 
    6 结果:
    7 ['a,b,c', '中国', 'quan', '']
    View Code

    5.4 查

    按切片去查:

    1 my_list = ['peng','li',"quan",'']
    2 
    3 print(my_list[1:3])
    4 结果:
    5 ['li', 'quan']
    View Code

     6、公共方法

    len():统计列表元素长度

    1 my_list = ['peng','li',"quan",'',[1,2,3],'','钟三','','']
    2 Len = len(my_list)
    3 print(Len)
    4 结果:
    5 9
    View Code

    count():统计指定元素的个数

    1 my_list = ['peng','li',"quan",'',[1,2,3],'','钟三','','']
    2 num = my_list.count('') #统计指定元素的个数
    3 print(num)
    4 结果:
    5 3
    View Code

    index():找到元素对应的索引,列表中通过元素找索引只有index

    1 my_list = ['peng','li',"quan",'',[1,2,3],'','钟三','','']
    2 num = my_list.index('quan')  #找到元素对应的索引,对列表进行通过元素找索引只有index()方法
    3 print(num)
    4 结果:
    5 2
    View Code
    1 my_list = ['peng','li',"quan",'',[1,2,3],'','钟三','','']
    2 num = my_list.index('')  #找到元素对应的索引,对列表进行通过元素找索引只有index()方法
    3 print(num)
    4 结果:
    5 3
    6 
    7 即返回第一次找到元素的索引
    View Code

    sort():正向排序

    1 my_list = [1,5,3,8,9,4,5,6,2,7,4]
    2 my_list.sort() #正向排序
    3 print(my_list)
    4 结果:
    5 [1, 2, 3, 4, 4, 5, 5, 6, 7, 8, 9]
    View Code

    sort(reverse = True):反向排序

    1 my_list = [1,5,3,8,9,4,5,6,2,7,4]
    2 my_list.sort(reverse=True) #反向排序
    3 print(my_list)
    4 结果:
    5 [9, 8, 7, 6, 5, 5, 4, 4, 3, 2, 1]
    View Code

    reverse():反转排序,即前后对应的元素对调

    1 my_list = [1,5,3,8,9,4,5,6,2,7,4]
    2 my_list.reverse()
    3 print(my_list) #反转
    4 
    5 结果:
    6 [4, 7, 2, 6, 5, 4, 9, 8, 3, 5, 1]
    View Code

     7、列表的嵌套

    1 #列表的嵌套
    2 list_nest = ['peng111',"abc",['quan',"zhang",23],"中国"]
    3 list_nest[2][1] = list_nest[2][1].capitalize() #把首字符变大写
    4 print(list_nest)
    5 结果:
    6 ['peng111', 'abc', ['quan', 'Zhang', 23], '中国']
    View Code

    6、元组(tuple)

    元组是只读列表,可以读,元组的儿子不改写,但元组的儿子可能可以写

    1 my_tuple = ('a','b','c',1,2,3,["peng",'qian'],"tuple")
    2 my_tuple[6][1] = my_tuple[6][1].upper()
    3 print(my_tuple)
    4 
    5 my_tuple[6].append("zhang")
    6 print(my_tuple)
    7 结果:
    8 ('a', 'b', 'c', 1, 2, 3, ['peng', 'QIAN'], 'tuple')
    9 ('a', 'b', 'c', 1, 2, 3, ['peng', 'QIAN', 'zhang'], 'tuple')
    View Code

    7、 range()用法

    range的用法:顾头不顾尾,范围的大小变化方向不能与步长的方向相反,否则输出为空,即什么也不输出
     1 for i in range(10):
     2     print(i)
     3 
     4 结果:
     5 0
     6 1
     7 2
     8 3
     9 4
    10 5
    11 6
    12 7
    13 8
    14 9
    View Code
     1 for i in range(1,10):
     2     print(i)
     3 结果:
     4 1
     5 2
     6 3
     7 4
     8 5
     9 6
    10 7
    11 8
    12 9
    View Code
    1 for i in range(1,10,2):
    2     print(i)
    3 
    4 结果:
    5 1
    6 3
    7 5
    8 7
    9 9
    View Code
    1 for i in range(1,10,-2):
    2     print(i)
    3 结果:
    4 (为空,什么也没输出,因为范围的大小变化方向与步长方向相反)
    View Code
    1 for i in range(10,1,-2):
    2     print(i)
    3 结果:
    4 10
    5 8
    6 6
    7 4
    8 2
    View Code
    1 for i in range(10,1,2):
    2     print(i)
    3 结果:
    4 (为空,没有输出,因为范围的大小变化方向与步长方向相反)
    View Code

     8、字典

    8.1 增

    字典的增加就两种方式

    第一种:直接按键来增加

     1 my_dic = {
     2     'name':['peng','quan'],
     3     'age':[{'num':20,'num2':30}],
     4     True:1,
     5     (1,2,3):"junfei",
     6     3:'B2'
     7 }
     8 
     9 my_dic['high'] = 175 #字典里面原来没有时候,就直接添加
    10 print(my_dic)
    11 my_dic['age'] = 25   #如果字典里面已经有了,那么就覆盖掉原来的
    12 print(my_dic)
    13 
    14 结果:
    15 {'name': ['peng', 'quan'], 'age': [{'num': 20, 'num2': 30}], True: 1, (1, 2, 3): 'junfei', 3: 'B2', 'high': 175}
    16 {'name': ['peng', 'quan'], 'age': 25, True: 1, (1, 2, 3): 'junfei', 3: 'B2', 'high': 175}
    View Code

    第二种:setdefault

    1 my_dic.setdefault('weight')
    2 print(my_dic)
    3 my_dic.setdefault('name','li') #如果字典里面已经有相应的键值对,则不作任何改变,没有的话则添加
    4 print(my_dic)
    5 结果:
    6 {'name': ['peng', 'quan'], 'age': [{'num': 20, 'num2': 30}], True: 1, (1, 2, 3): 'junfei', 3: 'B2', 'weight': None}
    7 {'name': ['peng', 'quan'], 'age': [{'num': 20, 'num2': 30}], True: 1, (1, 2, 3): 'junfei', 3: 'B2', 'weight': None}
    View Code

    8.2 删

    第一种:按确定键来删除某一个键值

     1 my_dic = {
     2     'name':['peng','quan'],
     3     'age':[{'num':20,'num2':30}],
     4     True:1,
     5     (1,2,3):"junfei",
     6     3:'B2'
     7 }
     8 print(my_dic.pop('age'))          #有返回值,按键值去删除
     9 print(my_dic)
    10 结果:
    11 [{'num': 20, 'num2': 30}]
    12 {'name': ['peng', 'quan'], True: 1, (1, 2, 3): 'junfei', 3: 'B2'}
    View Code

    第二种:不确定将被删除的键是否在字典中

     1 my_dic = {
     2     'name':['peng','quan'],
     3     'age':[{'num':20,'num2':30}],
     4     True:1,
     5     (1,2,3):"junfei",
     6     3:'B2'
     7 }
     8 
     9 print(my_dic.pop('zhong',None))   #这里的None是在不确定字典里面是否有我们想删的键值时候用,即如果字典有
    10 #                                   #要删的键则删除,如果没有不至于会报错,即可设置返回值
    11 print(my_dic)
    12 
    13 结果:
    14 None
    15 {'name': ['peng', 'quan'], 'age': [{'num': 20, 'num2': 30}], True: 1, (1, 2, 3): 'junfei', 3: 'B2'}
    View Code

    第三种:直接删除最后一个键值

     1 my_dic = {
     2     'name':['peng','quan'],
     3     'age':[{'num':20,'num2':30}],
     4     True:1,
     5     (1,2,3):"junfei",
     6     3:'B2'
     7 }
     8 print(my_dic.popitem() ) #从3.6版本开始,就是直接删除最后一个,返回值为键值及Value组成的元组
     9 print(my_dic)
    10 
    11 结果:
    12 (3, 'B2')
    13 {'name': ['peng', 'quan'], 'age': [{'num': 20, 'num2': 30}], True: 1, (1, 2, 3): 'junfei'}
    View Code

    第四种:清空一个字典

    1 my_dic = {
    2     'name':['peng','quan'],
    3     'age':[{'num':20,'num2':30}],
    4     True:1,
    5     (1,2,3):"junfei",
    6     3:'B2'
    7 }
    8 结果:
    9                为空,没有输出
    View Code

    第五钟:删除一个字典,删除以后,那个字典就不存在,如果还调勇print()函数则报错

     1 my_dic = {
     2     'name':['peng','quan'],
     3     'age':[{'num':20,'num2':30}],
     4     True:1,
     5     (1,2,3):"junfei",
     6     3:'B2'
     7 }
     8 del my_dic
     9 print(my_dic)
    10 
    11 结果:
    12 NameError: name 'my_dic' is not defined
    View Code

     8.3 改

    第一种:覆盖

     1 my_dic = {
     2     'name':['peng','quan'],
     3     'age':[{'num':20,'num2':30}],
     4     True:1,
     5     (1,2,3):"junfei",
     6     3:'B2'
     7 }
     8 my_dic['age'] = 22  #改的第一种方式就是覆盖
     9 print(my_dic)
    10 
    11 结果:
    12 {'name': ['peng', 'quan'], 'age': 22, True: 1, (1, 2, 3): 'junfei', 3: 'B2'}
    View Code

    第二种:一个字典更新到另一个字典方式

     1 my_dic2 = {"name":'peng','age':25,'hight':175}
     2 my_dic3 = {'name':'quan','sex':'fmale'}
     3 
     4 my_dic3.update(my_dic2)  #把my_dic2更新到my_dic3中,有键值的就覆盖,没有的就添加
     5 print(my_dic2)
     6 print(my_dic3)
     7 
     8 结果:
     9 {'name': 'peng', 'age': 25, 'hight': 175}
    10 {'name': 'peng', 'sex': 'fmale', 'age': 25, 'hight': 175}
    View Code

    8.4 查

    第一种:查键

    1 my_dic2 = {"name":'peng','age':25,'hight':175}
    2 print(my_dic2.keys(),type(my_dic2.keys()))  #以列表形式保存键值
    3 
    4 结果:
    5 dict_keys(['name', 'age', 'hight']) <class 'dict_keys'>
    View Code

    第二种:查值

    1 my_dic2 = {"name":'peng','age':25,'hight':175}
    2 
    3 print(my_dic2.values(),type(my_dic2.values())) #以列表形式保存值
    4 
    5 结果:
    6 dict_values(['peng', 25, 175]) <class 'dict_values'>
    View Code

    第三种:查键值对

    1 my_dic2 = {"name":'peng','age':25,'hight':175}
    2 print(my_dic2.items()) #以列表形式保存键值对
    3 
    4 结果:
    5 dict_items([('name', 'peng'), ('age', 25), ('hight', 175)])
    View Code

    第四种:直接按键查找,查得到则返回键对应的值,查不到则报错

     1 my_dic2 = {"name":'peng','age':25,'hight':175}
     2 print(my_dic2['age'])  #得到键对应的值
     3 print(my_dic2['age3']) #如果没有这个键的话,就报错
     4 
     5 结果:
     6 25
     7 Traceback (most recent call last):
     8   File "E:/Python Project/05/Day5/dict.py", line 63, in <module>
     9     print(my_dic2['age3']) #如果没有这个键的话,就报错
    10 KeyError: 'age3'
    View Code

    第五种:get方法,查得到则返回键对应的值,查不到则返回None,或者返回自定义的值

    1 print(my_dic2.get('hight'))
    2 print(my_dic2.get('age4')) #get的方法是查找这个键是否有,如果没有则返回None
    3 print(my_dic2.get('age4',"没有这个键")) #为了避免没有键时候返回None,我们加了“没有这个键”这个自定义返回值,辅助理解
    4 
    5 结果:
    6 175
    7 None
    8 没有这个键
    View Code

    8.5 字典在for循环引用中的不同

    什么都不写,默认打印的是键
    1 my_dic2 = {"name":'peng','age':25,'hight':175}
    2 for i in my_dic2:
    3     print(i)  #什么都不写,默认打印的是键
    4 
    5 结果:
    6 name
    7 age
    8 hight
    View Code

    打印出键

    1 my_dic2 = {"name":'peng','age':25,'hight':175}
    2 
    3 for i in my_dic2.keys(): #打印出键
    4     print(i)
    5 结果:
    6 name
    7 age
    8 hight
    View Code

    打印出值

    my_dic2 = {"name":'peng','age':25,'hight':175}
    
    for i in my_dic2.values(): #打印出值
        print(i)
    
    结果:
    peng
    25
    175
    View Code

    打印出元组形式的键值对

    1 my_dic2 = {"name":'peng','age':25,'hight':175}
    2 for i in my_dic2.items():  #打印出键值对的元组,用括号包括
    3     print(i) #每次循环,i是元组
    4 
    5 结果:
    6 ('name', 'peng')
    7 ('age', 25)
    8 ('hight', 175)
    View Code

    直接打印出键及值,没有元组形式的那个括号

    1 my_dic2 = {"name":'peng','age':25,'hight':175}
    2 for k,v in my_dic2.items():#直接打印出键值
    3     print(k,v)
    4 结果:
    5 name peng
    6 age 25
    7 hight 175
    View Code

    8.6 字典的嵌套

    1 my_dict = {
    2     'name':['peng','quan','li','zhang'],
    3     'chanpin':{'jiaoyan':10,
    4                  "gongchen":4,
    5                 "shengchan":8
    6                 },
    7     'age':25
    8 }

    直接改变值:

     1 my_dict = {
     2     'name':['peng','quan','li','zhang'],
     3     'chanpin':{'jiaoyan':10,
     4                  "gongchen":4,
     5                 "shengchan":8
     6                 },
     7     'age':25
     8 }
     9 my_dict['age'] = 22
    10 print(my_dict)
    11 结果:
    12 {'name': ['peng', 'quan', 'li', 'zhang'], 'chanpin': {'jiaoyan': 10, 'gongchen': 4, 'shengchan': 8}, 'age': 22}
    View Code

    查找键对应的值

     1 my_dict = {
     2     'name':['peng','quan','li','zhang'],
     3     'chanpin':{'jiaoyan':10,
     4                  "gongchen":4,
     5                 "shengchan":8
     6                 },
     7     'age':25
     8 }
     9 
    10 print(my_dict['chanpin'])
    11 结果:
    12 {'jiaoyan': 10, 'gongchen': 4, 'shengchan': 8}
    View Code

    在相应键的值增加元素

     1 my_dict = {
     2     'name':['peng','quan','li','zhang'],
     3     'chanpin':{'jiaoyan':10,
     4                  "gongchen":4,
     5                 "shengchan":8
     6                 },
     7     'age':25
     8 }
     9 my_dict["name"].append("liu")
    10 my_dict["chanpin"]["ruanjian"] = 12
    11 print(my_dict)
    12 结果:
    13 {'name': ['peng', 'quan', 'li', 'zhang', 'liu'], 'chanpin': {'jiaoyan': 10, 'gongchen': 4, 'shengchan': 8, 'ruanjian': 12}, 'age': 25}
    View Code

     9、集合

    集合:可变的数据类型,它里面的元素必须是不可变的数据类型,且无序,不重复
    假如要把列表里面的元素去重,那么直接把列表转变为集合即可。
    增、删、查,没有改
    set2 = set({1,2,3,4})
    print(set2)set3 = {1,2,3,[4,5],{'name':'peng','age':20}} #集合里面不能是可变数据类型list、dict

    9.1 增

    第一种add
    1 set2 = {'peng','quan','li','zhang'}
    2 # #第一种add
    3 set2.add('lan')
    4 print(set2)
    5 
    6 结果:
    7 {'li', 'quan', 'zhang', 'peng', 'lan'}
    View Code
    第二种updata
    1 set2 = {'peng','quan','li','zhang'}
    2 #第二种updata
    3 set2.update('zhu') #无序地把每个元素增加到集合中
    4 print(set2)
    5 结果:
    6 {'z', 'h', 'zhang', 'li', 'quan', 'u', 'peng'}
    View Code

    9.2 删

    pop()随机删除,返回被删除的元素
    1 set2 = {'peng','quan','li','zhang'}
    2 return2 = set2.pop()
    3 print(return2)
    4 print(set2)
    5 结果:
    6 li
    7 {'peng', 'quan', 'zhang'}
    View Code
    remove(),按元素去删,有则删,无则报错
    1 set2 = {'peng','quan','li','zhang'}
    2 set2.remove('peng')
    3 print(set2)
    4 结果:
    5 {'quan', 'zhang', 'li'}
    View Code

    clear()清空集合

    1 set2 = {'peng','quan','li','zhang'}
    2 set2.clear()
    3 print(set2)
    4 结果:
    5 set()
    6 set()表示空集合,是为了区分空字典set{}
    View Code

    del 删除整个集合

    1 set2 = {'peng','quan','li','zhang'}
    2 del set2
    3 print(set2)
    4 结果:
    5 Traceback (most recent call last):
    6   File "E:/Python Project/05/Day7/集合&深浅Copy.py", line 41, in <module>
    7     print(set2)
    8 NameError: name 'set2' is not defined
    View Code

    9.3 查

    1 set2 = {'peng','quan','li','zhang'}
    2 for i in set2:
    3     print(i)
    4 结果:
    5 peng
    6 quan
    7 li
    8 zhang
    9 这个结果每次是不一样的
    View Code

    9.4 交集

    1 set3 = {2,3,4,5,6}
    2 set4 = {5,6,7,8,9,10}
    3 set5 = set3 & set4
    4 print(set5)
    5 print(set3 & set4)
    6 print(set3.intersection(set4))
    View Code

    结果:

    1 {5, 6}
    2 {5, 6}
    3 {5, 6}
    View Code

    9.5并集

    1 set3 = {2,3,4,5,6}
    2 set4 = {5,6,7,8,9,10}
    3 print(set3.union(set4))
    View Code

    结果:

    1 {2, 3, 4, 5, 6, 7, 8, 9, 10}
    View Code

    9.6反交集

    1 set3 = {2,3,4,5,6}
    2 set4 = {5,6,7,8,9,10}
    3 print(set3 ^ set4)
    4 print(set3.symmetric_difference(set4))
    View Code

    结果:

    1 {2, 3, 4, 7, 8, 9, 10}
    2 {2, 3, 4, 7, 8, 9, 10}
    View Code

    9.7 差集

    1 set3 = {2,3,4,5,6}
    2 set4 = {5,6,7,8,9,10}
    3 print(set3 - set4) #就是得到set3独有的元素
    View Code

    结果:

    1 {2, 3, 4}
    View Code

    9.8 子集

    1 set5 = {1,2,3}
    2 set6 = {1,2,3,4,5}
    3 print(set5 < set6) #需要set5里的元素全部包含在set6中
    4 print(set5.issubset(set6)) #说明set5是set6的子集
    View Code
    结果:
    1 True
    2 True
    View Code

    9.9 超集

    1 set5 = {1,2,3}
    2 set6 = {1,2,3,4,5}
    3 print(set6 > set5) #说明set6是set5的超集
    4 print(set6.issuperset(set5)) #说明set6是set5的超集
    View Code

    结果:

    1 True
    2 True
    View Code

    9.10冻住

    frozenet(),把set变为不可变数据类型(set本身是可变数据类型)
    1 s2  = {1,2,3,'abc'}
    2 s2 = frozenset(s2)
    3 print(s2,type(s2))
    View Code

    结果:

    1 frozenset({1, 2, 3, 'abc'}) <class 'frozenset'>
    View Code

     10 深浅Copy

    10.1 浅copy

    在内存中重新创建了一个空间存放一个新列表,新列表中的元素与原列表中的元素是公用的。
    例1:
    1 l2 = [1,2,3]
    2 l3 = l2.copy()
    3 print(l2,l3)
    4 print(id(l2),id(l3))
    5 l3.append(4)
    6 print(l2,l3)
    View Code

    结果:

    1 [1, 2, 3] [1, 2, 3]
    2 37365960 37217224
    3 [1, 2, 3] [1, 2, 3, 4]
    View Code

    例2:

    1 l2 = [1,2,'peng',[4,5,6],7]
    2 l3 = l2.copy()
    3 print(l2,id(l2))
    4 print(l3,id(l3))
    5 print(id(l2[-1]),id(l3[-1]))
    6 print(id(l2[-2]),id(l3[-2]))
    View Code

    结果:

    1 [1, 2, 'peng', [4, 5, 6], 7] 43574216
    2 [1, 2, 'peng', [4, 5, 6], 7] 43724552
    3 1540514144 1540514144
    4 43722952 43722952
    View Code

    10.2 深copy:deepcopy

    新列表是在内存中新创建的,新列表中可变数据类型元素是新创建的,不可变数据类型元素是公用的
    例1:
     1 import copy
     2 l2 = [1, 2, 'peng', [4, 5, 6], 7]
     3 l3 = copy.deepcopy(l2)
     4 print(l2,id(l2))
     5 print(l3,id(l3))
     6 print(id(l2[-1]),id(l3[-1]))
     7 print(id(l2[-2]),id(l3[-2]))
     8 print(id(l2[-3]),id(l3[-3]))
     9 print(id(l2[-4]),id(l3[-4]))
    10 print(id(l2[-5]),id(l3[-5]))
    View Code

    结果:

    1 [1, 2, 'peng', [4, 5, 6], 7] 44051208
    2 [1, 2, 'peng', [4, 5, 6], 7] 44050504
    3 1540514144 1540514144
    4 44052232 44078408
    5 35109440 35109440
    6 1540513984 1540513984
    7 1540513952 1540513952
    View Code
     
  • 相关阅读:
    The connection to the server localhost:8080 was refused
    Error: client: etcd cluster is unavailable or misconfigured; error #0: dial tcp 127.0.0.1:4001: getsockopt: connection refused
    docker-machine on azure
    Spine学习二 -播放Spine动画
    第三人称角色控制器解析
    3D人物移动控制实现方案
    Transform与Vector3 的API
    Animator.SetFloat(string name,float value,float dampTime,float deltaTime)详解
    Unity坑之 加了Rigidbody后主角反而朝天上飞?
    使用代码给Unity中的动画片段绑定回调函数
  • 原文地址:https://www.cnblogs.com/xiaofei1106/p/10527181.html
Copyright © 2011-2022 走看看