Python基础

    xiaoxiao2022-07-07  160

    3.1注释

    注释:单行注释,多行注释,批量注释,中文注释,特殊注释

    3.1.1单行注释 #

    #我是单行注释 >>>print("hello") >>>print("hello") #我是单行注释

    3.1.2多行注释,批量注释

    '''我是多行注释''' """我是批量注释"""

    3.1.3 中文注释。#

    #coding=utf-8# -*- coding:utf-8 -*-

     必须放在首部

    3.1.4 特殊注释 #

    #!/usr/bin/env python

    主要用于linux系统,用来告诉系统python解释器的位置

    3.2标识符

    组成是由字母数字下划线,不能以数字开头

    大小写敏感区分

    不能使用关键字,保留字

    以双下划线开头的和结尾的表示特殊含义

    3.3变量

    3.3.1 通常声明和赋值

    变量名=字面量或表达式                 

    >x=5;分号可加可不加 >print(x)5>x=5;y=6;z=7多个变量分号区分 >print(y); 6

    分号或者换行代表结束

    >str="hello" >print(str) hello >info="abcdefg" >info abcdefg

    文件的形式不可以省略print

    3.3.2 链式赋值

    变量1=变量2=字面量或表达式

    等价于

    变量2=字面量或表达式

    变量1=变量2

    3.4 复合赋值运算符(简洁表达式)

    +=

    -=

    *=

    /=

    //=整除

    num1=5; num1+=1; num1; 6

    定义过的变量可以反复使用

    3.5删除变量

    >del info >info 报错

    3.6解包

    >x,y=1,2(abc) >x 1 >y2 (abc)

    前后个数一样,类型可以不一致

     

     

    3.1常量

    python里面没有常量

    大写就表示常量

    >>>NUM=5

    3.2数据类型

    分为内置数据类型,自定义数据类型

    内置数据类型:数值数据类型,序列数据类型,集合数据类型,字典数据类型,特殊数据类型,其他数据类型

    数值数据类型:整数,浮点数,布尔,复数

    序列数据类型:字符串,元组,字节序列,列表,字节数组

    集合数据类型:集,不可变集

    3.2.1 整数(int)

    利用进制表示整数

    十进制

    十六进制:0x(0X)

    八进制:0o(0O)

    二进制:0b(0B)

    范例:

    >>>i1=0b100

    >>>i1

    4

    >>>type (i)

    <class int>

    3.2.2整数对象

    >>>int (123)

    123

    >>>int("123")

    123

    >>>int("12a")

    报错

     

    int(x)

    int (x,y)

    >>>(123.78)

    123

    >>>('100',2)

    4

    >>>int (100,2)

    报错

    前面字符串,后面进制

     

    单引号双引号均表示字符串

    3.2.4float对象

    前导0可以省略

    >>>i2=.4

    >>>i2

    0.4

    >>>type (3.14)

    <class 'float'>

     

    >>>float (124)

    124.0

    >>>float (3.14)

    3.14

    >>>float ('123')

    123

    >>>float ('abc')

    报错

    3.2.5复数类型

    >>>1+2j

    (1+2j)

    >>>type(1+2j)

    <class 'complex'>

    实部虚部必须写,j不可以换成其他字母,实部虚部可以是整数或者浮点数

    >>>1+j

    报错

    >>>j

    报错

    >>>1+2a

    报错

    >>>1+0j

    (1+0j)

    >>>0+1j

    1j

    >>>1+.5j

    1+0.5j

    >>>.+.j

    报错

    >>>1+.j

    报错

    >>>1+1.j

    1+1j

    不能前导0后导0同时省略

    3.2.6 complex对象

    complex(x,[y])  y可有可无

    >>>c=complex(4,5)

    >>>c

    4+5j

    >>>complex(6)

    6+0j

    >>>complex(7,)

    7+0j

    real:实部

    imag:虚部

    >>>(1+2j). real

    1.0

    >>>(1+2j).imag

    2.0

    >>>a=1+2j

    >>>b=complex(4,5)

    >>>a+b

    5+7j

    3.2.7布尔类型(bool)

    布尔类型的值:True,False(首字母大写)

    >>>True

    True

    >>>type(False)

    <class 'bool'>

    >>>type(true)

    报错

    3.2.8 bool对象

    bool(x)

    >>>bool(True)

    True

    >>>bool('True')

    True

    >>>bool(0)

    False

    >>>bool(1)

    True

    >>>bool('abc')

    True

    >>>bool('0')

    True

    >>>bool(0.0)

    False

    只要不是数值0,剩下都是True

    3.3数据类型转换

    显示转换,隐式转换

     隐式转换(自动类型转换)

    >>>1+23.4

    24.4

    >>>123+True

    124

    >>>123+False

    123

    显示转换(强制转换)

    >>>int(123.4)

    123

    >>>i=3**2

    >>>float(i)

    9

    >>>a=9999*9999

    >>>float(i)

    报错

    能用隐式不要用显示,显示会形成精度丢失或者异常问题

    3.4字符串(str)

    字符串的表示有四种方式:

    '  '      ,       "  "一行

    '''  '''     ,       ""  ""跨行或多行

    范例:字符串的拼接

    >>>'abc'+'def'

    'abcdef'

    >>>'abc''def'

    'abcdef'

    3.5 转义字符

    \n  换行

    \r  回车

    \t  一个水平制表符

    \v  一个垂直制表符

    \'

    \"

    \\

    \f   换页

    \b  退格

    范例:

    >>>s='a\tb\tc\td\t'

    >>>s

    'a\tb\tc\td\t'

    >>>print (s)

    a b c d

    >>>s1=r'a\tb\tc\td\t'

    >>>s1

    'a\\tb\\tc\\td\\t'

    >>>print(s)

    'a\tb\tc\td\t'

    把使用r或R的字符串称为原始字符,该字符串中包含的字符不能将进行转义

    3.6str对象

    str(x)

    范例:

    >>>str('abc')

    'abc'

    >>>str(1230)

    '1230'

    >>>str(True)

    'True'

    >>>str(2.12)

    '2.12'

    3.7运算符

    1)算数运算符 +  -  *  /  %  //  **

    2)比较运算符 ==   !=    >    <     >=     <=

    3)赋值运算符=     +=      -=     *=      /=      %=       **=      //=

    //除法,取整(不四舍五入)

    **幂运算

    %取余

     

     

    3.1

    >>>a=10

    >>>b=20

    >>>a and b

    20

    >>>a or b

    10

    >>>not(a and b)

    false

    3.2成员运算符

    In,not in

    >>>x=abcde

    >>>y=e

    >>>z=you

    >>>y in x

    True

    >>>z in y

    False

    >>>z not in x

    True

     

    3.3身份运算符

    用于比较两个对象的存储单元

    >>>x='abc'

    >>>y=x

    >>>z='abcde'

    >>>x is y

    True

    >>>x is z

    False

    >>>x is not z

    True

    >>>x ='abc'

    >>>y='abc'

    >>>x is y

    True

     

    3.4括号运算符

    ()

    3.5运算符优先级

    逻辑型,not,and,or

    测试型,is,not is,in,not in

    关系型,==   !=    >    <     >=     <=

    算数型,+,-,*,/,%,//

    3.6 Q&A

    问,is与==区别, is是地址比较,==是内容比较(与其他语言相反)

    3.7异常

    1)

    print((3);print(x+'.'+y);

    2)运行时错误或异常

    primt(3);num1 +=1;print(5/0);

    3)逻辑错误

    求平均数,average=first+second/2;

    正确的:average=(first+second)/2

     

     

    我的手机 2018/10/14 18:19:15

     

    3.8流程控制语句

    分为顺序语句,判断语句(选择语句),循环语句

    3.8.1顺序语句

    3.8.2选择语句

    单分支

    if(条件表达式):

                    语句

    说明,

    1)条件表达式:关系表达式,逻辑表达式,算数表达式

    2)语句:可以是单个语句,也可以是多个语句,但如果是多个语句,要注意缩进

    单个语句

    >>>x=5

    >>>y=6

    >>>if(x>y)冒号没写

    报错

    多个语句

    >>>x=1

    >>>y=2

    >>>if(x>y):

              print('a')

    else:

              print('b')

     

    b

     

    >>>x=1

    >>>y=2

    >>>if(x>y):

           print('a')

          else:应该顶上

    报错

     

    >>>if(x>y):print('a')

    else:print('b')

     

    b

     

    >>>if(x>y): print('a');else:print('b')

    报错

    无三元运算符

     

    多分支

    if(条件表达式):

           语句

    elif(条件表达式):

          语句

    else:

          语句

    if的嵌套

    if(条件表达式):

           语句

    elif(条件表达式):

          语句

    else:

          语句

    范例:

    计算两个数相处的结果,要除数为0时

    3.8.3循环语句

             循环分为for循环和while循环

    名词解释:

    1)可迭代对象:系列,字典,文件对象,迭代器对象,生成器对象

    for循环的语法格式:

    for  变量 in (对象集合):

    >>>for i in (1,2,3,4,5):

                 print(i)

    1

    2

    3

    4

    5

    range对象:在Python3中,range对象表示一个迭代器对象,作用是用来产生指定的该迭代器数字序列

    在Python2中,range它表示的是一个函数,为生成器。

    range(start,stop,[step])

    >>>for i in range(1,11,1):

               print(i)

    输出1—10

    步长为一可以省略,开始数包含,终止数不包含,省略开始数时从0开始输出

    >>>for i in range(10):

                print(i,end='  ')

    0  1   2…

    >>>for i in range(10):

                print(i,end='\t')

    0         1         2…

    while循环:

    while(条件表达式):

           语句

    3.8.4循环的嵌套

    范例:打印九九乘法表

    for i in range (1,10):

          for j in range(1,10):

                  print (i,'*',j,'=', i*j,end='\t')

           print('   ')

    嵌套不允许超过三层

    3.8.5循环跳出

            break,continue

    3.8.6死循环

           Ctrl+C:终止当前运行的程序

     

     

    3.1 循环else语句

    for,while循环语句中可以增加else子句。如果for,while循环没有被break终止,则会执行else子句,否则不循环。

    for循环

    for 变量 in 对象集合:

         语句

    else:

         语句

    While循环:

    while(条件表达式):

        语句

    else:

        语句

    haabbies=""

    for i in range(1,3+1):

        s=input("请输入爱好之一(最多三次,按Q结束)")

        if s=='Q':

           break

        babbies+=s+' '

    else:

        print("你输入了三个爱好")

    print("你的爱好为",habbies)

     

    3.2空语句

    for i in range(5):

            if(i==3):

                 pass

                 print('执行')

            print(i)

    3.3练习

    1)用户登录,三次机会

    字符串连接最好不要用+号,最好用,号

    username=admin

    password=123456

    for i in range(3):

          user=input('请输入账号')

    passwd=input('请输入密码')

    if user ==username and passwd==password:

           #print('登录成功,欢迎,admin,的登录')

           print('登录成功,欢迎%s的登录'%(user))

           break

    eliif i==2

           print('对不起,你输入出错次数已经是三次了')

    else:

           print('帐号与密码不匹配')

    2)猜数字

    生成随机数方法:

    import random

    s=random.randint(1,100)

    print (s)

     

     

    import random

    s=random.randint(1,100)

    print ('猜数字')

    num=input('请输入你猜测的数字'\n)

    guess=int (num)

    n=0

    while n<2:   

          if guess==answer  and  n==0:

                print('你真厉害,一次就猜对了')

                break

          if   guess<answer:

                print('不对,太小了')

         elif   guess>answer:

                print('不对,太大了')

         elif   guess=answer:

                print('对了')

         num=input('请输入你猜测的数字\n')

         guess=int(num)

         n=n+1

         if n==1  and  guess==answer

               print('么么哒,你第二次猜对了')

               break

         elif  n==2 and  guess==answer

               print('你终于第三次猜对了')

               break

    print('你太笨了,游戏结束')

    3)输入若干个学生的成绩,求出平均值,最大值和最小值

    sAvg=0

    sCnt=1

    sScore=int(input('请输入一个同学的成绩:(-1表示结束)')

    sMax=sScore

    sMin=sScore

    while sScore>=0:

             sAvg=sAvg+sScore

             sCnt=sCnt+1

             if sScore>sMax:

                 sMax=sScore

             if sScore<sMin:

                 sMin=sScore

             sScore=int(input('请输入一个同学的成绩:(-1表示结束)')

    print('计算出来的平均成绩是',sAvg/sCnt)

    print('计算出来的最大成绩是',sMax)

    print('计算出来的最小成绩是',sMin)

    3.4数据结构

    数据结构是用来存储和组织数据的方式,表示集合中的一种或多种特定关系

    在Python中,常见的数据类型称为容器。序列(列表,元组),映射(字典),集合是三类主要的容器

    3.5数组

    数组都是一种数据结构,用来存储或者处理大量的数据。在数组中,通过索引下标进行访问操作

    在Python中,没有数组这个东西。用系列数据类型来代替数组。

    3.6系列数据类型

    系列数据类型是python中最简单的数据结构,是一组有顺序的元素的集合。系列数据类型可以包含一个和多个元素,也可以包含空集合(没有元素)

    系列数据类型包括:列表,元组,字符串,字节数据

    3.7序列

    序列的定义:把大量的数据按次序排列起来而形成的集合称为序列

    所有的序列类型都可以进行某些特定的操作,这些操作包括:索引,分片,加,乘以及检查某个元素是否属于序列的成员,序列长度,最大元素,最小元素等操作

     

    序列分类:按照顺序,有序序列,列表,元组,字符串

                                                无序序列,字典,集合

                          按照序列内容变化,可变序列,列表,字典,集合

                                                                  不可变序列,元组,字符串

    3.8列表

    列表是一组有序项目的数据结构。其中对象可以是任意类型,并不要求类型一致。

    列表是数据类型,因此它可以进行添加,删除,修改等操作。

    3.8.1列表的创建

    字面量创建

            

    对象创建

    推导式创建

     

     

    3.1列表

    推导式:专门用来生成满足特定需求的列表

    语法格式:

    表达式 for 变量 in 序列

    范例:

    >>>list1=[x*x for x in range(1,10)]

    >>>list1

    [1,4,9,16,25,36,49,64,81]

    >>>list2=[I for I in list1]

    >>>list2

    [1,4,9,16,25,36,49,64,81]

    >>>list3=[I for I in list1 if i%2==0]

    >>>list3

    [4,16,36,64]

    3.2列表的操作

    列表的常见操作:索引访问,切片操作,连接操作,重复操作,成员关系操作,比较运算操作,以及求长度,最大值,最小值,求和等等。

    3.2.1索引操作

    下标只能是整数

    >>>list1=[1,2,3,4]

    >>>list1[0]

    1

    >>>list1[-1]

    4

    >>>list1[9]

    index报错

    >>>list1['a']

    type错误

    >>>list1[0]=10

    >>>list1

    [10,2,3,4]

    3.2.2删除列表中的元素

    >>>list1=[1,2,3,4]

    >>>del list1[1]

    >>>list1

    [2,3,4]

    3.2.3求列表的长度,最大值,最小值,求和

    >>>list2=[1,2,3,4,5,6]

    >>>len(list2)

    6

    >>>max(list2)

    6

    >>>min(list2)

    1

    >>>sum(list2)

    21

    注意:max,min,sum在使用时必须是列表中元素类型统一,sum只有是数值求和时才能用

    3.2.4切片

    截取列表的一部分

    s[i:j]

    s[i:j:k]

    i开始下标,j结束下标,k步长,不包括j

    ijk可以省略,格式不能省略

    i省略表示从0开始,j省略表示到结尾结束,k省略表示步长为1

    超边界不报错

    范例:

    >>>list5=[1,2,3,4,5,6,7]

    >>>list5[1:3]

    [2,3]

    >>>list5

    [1,2,3,4,5,6,7]

    >>>list5[:3]

    [1,2,3]

    >>>list5[:2]=[]

    >>>list5

    [3,4,5,6,7]

    >>>del list5[:1]

    >>>list5

    [4,5,6,7]

    3.2.5连接和重复操作

    连接+(只连接不去重)

    重复*

    >>>list6=[1,2]

    >>>list7=[3,4]

    >>>list6+list7

    [1,2,3,4]

    >>>list8=[1,2,3]

    >>>list9=[3,4,5]

    >>>list8+list9

    [1,2,3,3,4,5]

    >>>list10=[1,2,3]

    >>>3*list10

    [1,2,3,1,2,3,1,2,3]

    3.2.6成员关系操作

    in,not in,count()指定元素在列表中出现的次数,

    index(x,[i,j])x指定元素,i开始位置j结束位置指定元素第一次出现的位置下标

    >>>list1=[1,2,3,4,5]

    >>>3 in list1

    True

    >>>list2=[1,2,3,3,4,5,3,3,5]

    >>>list2.count(3)

    4

    >>>list2.index(5,5,8)

    5

    >>>list2.index(2)

    1(省略ij,代表从头到尾)

    >>>list2.index(9)

    报错(如果不在直接报错)

    3.2.7比较运算操作

    >,>=,<,<=,==,!=逐个进行比较

    范例:

    >>>list1=['a','b']

    >>>list2=['a','b']

    >>>list3=['a','b','c']

    >>>list4=['c','b','a']

    >>>list1=list2

    True

    >>>

    >>>list1<list3

    True

    >>>list4>list3

    True

    3.2.8排序操作

    sorted()

    >>>list5=[6,3,4,2,1]

    >>>sorted(list5)

    [1,2,3,4,6]

    >>>list5

    [6,3,4,2,1]

    3.2.9 any,all

    判断列表中的元素是否为true

    >>>any([1,2,0])

    True

    >>>all([1,2,0])

    False

    3.2.10列表的遍历

    >>>list1=['html','css','js']

    >>>for i in list1:

                 print('序号:%s 值:%s '%(list1.index(i)+1,i))

    序号:1 值: html

    序号:2 值:css

    序号:3 值:js

    >>>for i in range(len(list1)):

                   print('序号:%s 值:%s'%(i+1,list1[i]))

    3.2.11列表的拆封

    >>>ab=[1,2]

    >>>a,bc

    报错

    >>>a,b

    (1,2)

    >>>a

    1

    >>>b

    2

    >>>a,b,c=[1,2]

    报错

     

    >>> [1,2,3]

    [1, 2, 3]

    >>> temp=[1,2,3]

    >>> temp

    [1, 2, 3]

    >>> data=[1001,'tom',[80,90,100]]

    >>> sid,name,score=data

    >>> name

    'tom'

    >>> sid

    1001

    >>> score

    [80, 90, 100]

    >>> sid,name,[chinese,english,math]=data

    >>> chinese

    80

    >>> english

    90

    >>> math

    100

    >>> sid

    1001

    >>> name

    'tom'

     

    3.2.12列表的解析(推导式)

     

    推导式:专门用来生成满足特定需求的列表

    语法格式:

    表达式 for 变量 in 序列

    >>>list3=[I for I in list1 if i%2==0]

     

     

    组表达式

    >>>i=1

    >>>[(i,i*2) for i in range(10)]

    [(0,0,),(1,2),(2,4),(3,6),(4,8),(5,10),(6,12),(7,14),(8,16),(9,18)]

    >>> x=1

    >>> y=2

    >>> z=3

    >>> [(x,y,x+y+z) for x in range(1,4)]

    [(1, 2, 6), (2, 2, 7), (3, 2, 8)]

    >>> [(x,y,x+y+z) for x in range(1,4) for y in range(1,4) if x>=y]

    [(1, 1, 5), (2, 1, 6), (2, 2, 7), (3, 1, 7), (3, 2, 8), (3, 3, 9)]

     

    3.1 元组(定值表)

    用来存储固定不变的值表,有序序列。

    创建元组的方式:

    1.字面量的方式

    (x1,x2,,,)

    x1,x2,,,,

    范例:

    >>>t1=(1,2,3,4,5)

    >>>t1

    (1,2,3,4,5)

    >>>t2=1,2,3,4,5

    >>>t2

    (1,2,3,4,5)

    >>>t3=()

    >>>t3

    ()

    >>>t4=1

    >>>t4

    1

    >>>t4=1,

    >>>t4

    (1,)

    若元组只有一个元素,需要在元素后加逗号

    多个元素也可以加,加不加效果一样

    2.对象

    tuple()

    >>>t7=tuple(1,2,3,4,5)

    报错

    >>>t7=tuple([1,2,3,4,5])

    >>>t7

    (1,2,3,4,5)

    >>>t8=tuple("abcde")

    >>>t8

    ("a","b","c","d","e")

    >>>t2=(1,2,'a')

    >>>t2

    (1,2,'a')

    元素可以不一样

    >>>u=('abc')

    >>>v=u,(1,2,3)

    >>>v

    (('a','b','c'),(1,2,3))

    >>>v[1][1]=10

    报错

    元组本身不能变,但是因为类型不同可能会变

    >>> a=tuple("abc")

    >>> w=a,[1,2,3]

    >>> w

    (('a', 'b', 'c'), [1, 2, 3])

    >>> w[1][1]=10

    >>> w

    (('a', 'b', 'c'), [1, 10, 3])

     

    3.2元组的操作

    与列表一样,索引访问,切片操作,连接操作,重复操作,成员关系操作,比较运算操作,求长度,最大值,最小值等等

    >>>any((1,2,3))

    True

    >>>all((1,2,0))

    False

    >>> t=(1,2,3,4,5)

    >>> for x in t:

          print(x)

     

          

    1

    2

    3

    4

    5

    >>> for x in 3.13,5.12,6.77:

          print(x)

     

          

    3.13

    5.12

    6.77

     

    >>> t1=(1,2)

          

    >>> t2=(1,2)

          

    >>> t3=(1,2,3)

          

    >>> t1<t2

          

    False

    >>> t1<=t2

          

    True

    >>> t=(3,4,6,2,1)

     

    >>> sorted(t)

          

    [1, 2, 3, 4, 6]

     

    >>> data=(1001,"张三",(100,90,89))

          

    >>> sid,name,scores=data

          

    >>> name

          

    '张三'

    >>> sid

          

    1001

    >>> scores

          

    (100, 90, 89)

    >>> sid,name,(chinese,math,english)=data

          

    >>> chinese

          

    100

    >>> first,middle,last=(1,2,3,4,5,6,7,8,9)

          

    Traceback (most recent call last):

      File "<pyshell#29>", line 1, in <module>

        first,middle,last=(1,2,3,4,5,6,7,8,9)

    ValueError: too many values to unpack (expected 3)

    >>> first,*middle,last=(1,2,3,4,5,6,7,8,9)

          

    >>> first

          

    1

    >>> middle

          

    [2, 3, 4, 5, 6, 7, 8]

    >>> last

          

    9

    >>> *first,middle,last=(1,2,3,4,5,6,7,8,9)

          

    >>> first

          

    [1, 2, 3, 4, 5, 6, 7]

    >>> middle

          

    8

    >>> last

          

    9

     

    *

     

    去掉最高最低求均分

    >>> first,*middle,last=sorted((67,56,87,23,45,90))

          

    >>> sum(middle)/len(middle)

          

    63.75

     

    临时变量:_

    >>>_,b_=(1,2,3)

    >>>b

    2

    >>>_

    3

    >>>record=('tom','tom@163.com','0411-123456','123123123')

    >>>name,_,*phones

    >>>phones

    ['0411-123456','123123123']

    >>>name,phones

    ('tom',['0411-123456','123123123'])

    列表与元组相互转换

    >>> t1=(1,2,3,4,5)

          

    >>> list1=list(t1)

          

    >>> list1

          

    [1, 2, 3, 4, 5]

    >>> list2=['a','b','c']

          

    >>> t2=tuple(list2)

          

    >>> t2

          

    ('a', 'b', 'c')

     

    练习,输入一个数字,转换成中文数字

    1234567890--->壹贰叁肆伍陆柒捌玖零

     

    t1=('零','壹','贰','叁','肆','伍','陆','柒','捌','玖')

    num=input('请输入数字'\n)

    print(t1[int(num)])

    方法一:

    chinese_number=('零','壹','贰','叁','肆','伍','陆','柒','捌','玖')

    number=input("请输入一个数字")

    for i in number:

        print(chinese_number[int(i)])

    方法二:

    chinese_number=('零','壹','贰','叁','肆','伍','陆','柒','捌','玖')

    number=input("请输入一个数字")

    dig_number=('0','1','2','3','4','5','6','7','8','9')

    print(chinese_number[dig_number.index(number)])

    方法三:

    chinese_number=('零','壹','贰','叁','肆','伍','陆','柒','捌','玖')

    number=input("请输入一个数字")

    for i in range(len(number)):

        if "." in number[i]:

            print("点",end=" ")

        else:

            print(chinese_number[int(number[i])],end=" ")

     

    字典

    创建方式

    1)字面量

    >>>{'优':90,'良':80}

    {'优':90,'良':80}

    2)通过dict()方式

    >>>dict1=dict([['优':90],['良':80],['中',70]])

    >>>dict1

    {'优':90,'良':80,'中':70}

    把[]都换成()也可以

    >>>dict3=dict(zip(['优','良','中'],[90,80,70]))

    >>>dict3

    {'优':90,'良':80,'中':70}

    3)通过fromkeys()方式

    4)推导式

    键:值 for

    >>> dict4={}.fromkeys(['优','良','中'],'大于60分')

    >>> dict4

    {'优': '大于60分', '良': '大于60分', '中': '大于60分'}

    >>> dict5={}.fromkeys(['优','良','中'])

    >>> dict5

    {'优': None, '良': None, '中': None}

    >>> dict6={}.fromkeys(['优','良','中'],None)

    >>> dict6

    {'优': None, '良': None, '中': None}

    >>> dict7={n:n**2 for n in range(1,5)}

    >>> dict7

    {1: 1, 2: 4, 3: 9, 4: 16}

     

    字典的操作

    >>> dict3=dict(zip(['优','良','中'],[90,80,70]))

    >>> dict3.get('优')

    90

    >>> dict3.get('差')

    >>> dict3.get('差','键不存在')

    '键不存在'

    >>> dict3.get('优','键不存在')

    90

    >>> dict3['优']

    90

     

    items(),keys(),values()

     

    >>> dict3.items()

    dict_items([('优', 90), ('良', 80), ('中', 70)])

    >>> dict3.keys()

    dict_keys(['优', '良', '中'])

    >>> dict3.values()

    dict_values([90, 80, 70])

    >>> for i in dict3.values():

    print(i,end=",")

     

     

    90,80,70,

    >>> for i in dict3.items():

    print(i,end=",")

     

     

    ('优', 90),('良', 80),('中', 70),

    >>> for i in dict3.keys():

    print(i,end=",")

     

    优,良,中,

    >>> for i in dict3:

    print(i,end=",")

     

    优,良,中,

     

    合并字典update

    >>> dict1={'No1':'Java','No2':'c','No3':'Python'}

    >>> dict1

    {'No1': 'Java', 'No2': 'c', 'No3': 'Python'}

    >>> dict1['No4']='VB'

    >>> dict1

    {'No1': 'Java', 'No2': 'c', 'No3': 'Python', 'No4': 'VB'}

    >>> dict1['No4']='php'

    >>> dict1

    {'No1': 'Java', 'No2': 'c', 'No3': 'Python', 'No4': 'php'}

    >>> dict2={'No1':'Java'}

    >>> dict3={'No2':'C','No3':'Python'}

    >>> dict2.update(dict3)

    >>> dict2

    {'No1': 'Java', 'No2': 'C', 'No3': 'Python'}

    >>> dict4={'No2':'c++'}

    >>> dict2.update(dict4)

    >>> dict2

    {'No1': 'Java', 'No2': 'c++', 'No3': 'Python'}

     

    删除元素

    del(),pop(),popitem(),clear()

    >>>del(dict2['No2'])

    >>>dict2

    {'No1:'Java','No3':'Python'}

    >>>del dict2

    >>>del2

    报错

    >>> dict5={'No1': 'Java', 'No2': 'c', 'No3': 'Python', 'No4': 'VB'}

    >>> dict5.pop('No1')

    'Java'

    >>> dict5

    {'No2': 'c', 'No3': 'Python', 'No4': 'VB'}

    >>> dict5.pop('No1')

    Traceback (most recent call last):

      File "<pyshell#16>", line 1, in <module>

        dict5.pop('No1')

    KeyError: 'No1'

    >>> dict5.pop('No1','键不存在')

    '键不存在'

    >>> dict5.popitem()

    ('No4', 'VB')

    >>> dict5.popitem()

    ('No3', 'Python')

    >>> dict5

    {'No2': 'c'}

    >>> dict5={'No1': 'Java', 'No2': 'c', 'No3': 'Python', 'No4': 'VB'}

    >>> dict5.clear()

    >>> dict5

    {}

     

    集合

    创建方式:

    1)字面量

    {值}

    值必须是固定的类型,字符串元组之类的,不可以是可变类型

    >>>{1.2,True}

    {True,1.2}

    集合无序

    >>>set1={'a',[1,2,3]}

    报错

    >>>set1={1,(1,2,3)}

    不报错

    2)通过对象创建    去重

    set()参数最多是一个

    frozenset()

    范例:

    >>> set1={'a',[1,2,3]}

    Traceback (most recent call last):

      File "<pyshell#0>", line 1, in <module>

        set1={'a',[1,2,3]}

    TypeError: unhashable type: 'list'

    >>> set1={1,[1,2,3]}

    Traceback (most recent call last):

      File "<pyshell#1>", line 1, in <module>

        set1={1,[1,2,3]}

    TypeError: unhashable type: 'list'

    >>> set1={1,(1,2,3)}

    >>> set2=set('hello')

    >>> set2

    {'o', 'h', 'e', 'l'}

    >>> set3=set([1,2,3,4,5])

    >>> set3

    {1, 2, 3, 4, 5}

    >>> set4=set()

    >>> set4

    set()

    >>> set5=set(1,2,3)

    Traceback (most recent call last):

      File "<pyshell#9>", line 1, in <module>

        set5=set(1,2,3)

    TypeError: set expected at most 1 arguments, got 3

     

    3)推导式

    >>> a=frozenset('hello')

    >>> a

    frozenset({'o', 'h', 'e', 'l'})

    >>> {x*x for x in range(1,5)}

    {16, 1, 4, 9}

    >>> {1,True}

    {1}

    >>> {1,False}

    {False, 1}

    >>> {1,1.0}

    {1}

      

     

    3.3集合的操作

    >>> set1={1,2,3,6,7,8,5,4,9}

    >>> for i in set1:

    print(i,end=',')

     

     

    1,2,3,4,5,6,7,8,9,

    >>> 1 in set1

    True

    >>> set1={1,2,3}

    >>> set2={2,3,4,5,6}

    >>> set1

    {1, 2, 3}

    >>> set1|set2

    {1, 2, 3, 4, 5, 6}

    >>> set1&set2

    {2, 3}

    >>> set1-set2

    {1}

    >>> set1^set2

    {1, 4, 5, 6}

    >>> set1.union(set2)

    {1, 2, 3, 4, 5, 6}

    >>> set1==set2

    False

    >>> set1>set2

    False

    >>> set1<set2

    False

    >>> set1

    {1, 2, 3}

    >>> len(set1)

    3

    >>> len(set2)

    5

    >>> max(set2)

    6

    >>>set1.update(set2) 

    {1,2,3,4,5,6}

     

    >>>set1={1,2,3,4,5}

    >>>set2=set1.copy()

    >>>set2

    {1,2,3,4,5}

     

    >>>set2[0]

    报错

    因为集合的无序性,不可以做切片操作

     

    >>> str1="字符串str的编码和解码操作"

    >>> b1=str1.encode(encoding='cp936')

    >>> b1

    b'\xd7\xd6\xb7\xfb\xb4\xaestr\xb5\xc4\xb1\xe0\xc2\xeb\xba\xcd\xbd\xe2\xc2\xeb\xb2\xd9\xd7\xf7'

    >>> b1.decode()

    Traceback (most recent call last):

      File "<pyshell#3>", line 1, in <module>

        b1.decode()

    UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd7 in position 0: invalid continuation byte

    >>> b1.decode(encoding='cp936')

    '字符串str的编码和解码操作'

    >>> "结果为:%f"

    转载请注明原文地址: https://yun.8miu.com/read-27190.html
    最新回复(0)