美文网首页
Python基础知识总结

Python基础知识总结

作者: 诺馨 | 来源:发表于2018-01-17 11:05 被阅读135次

    Python 数据类型

    一、整数

    Python可以处理任意大小的整数,当然包括负整数,在Python程序中,整数的表示方法和数学上的写法一模一样,例如:1,100,-8080,0,等等。

    计算机由于使用二进制,所以,有时候用十六进制表示整数比较方便,十六进制用0x前缀和0-9,a-f表示,例如:0xff00,0xa5b4c3d2,等等。

    二、浮点数

    浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,比如,1.23x109和12.3x108是相等的。浮点数可以用数学写法,如1.23,3.14,-9.01,等等。但是对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23x10^9就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5,等等。

    整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的(除法难道也是精确的?是的!),而浮点数运算则可能会有四舍五入的误差。

    三、字符串

    字符串是以''或""括起来的任意文本,比如'abc',"xyz"等等。请注意,''或""本身只是一种表示方式,不是字符串的一部分,因此,字符串'abc'只有a,b,c这3个字符。

    四、布尔值

    布尔值和布尔代数的表示完全一致,一个布尔值只有True、False两种值,要么是True,要么是False,在Python中,可以直接用True、False表示布尔值(请注意大小写),也可以通过布尔运算计算出来。

    布尔值可以用and、or和not运算。

    and运算是与运算,只有所有都为 True,and运算结果才是 True。

    or运算是或运算,只要其中有一个为 True,or 运算结果就是 True。

    not运算是非运算,它是一个单目运算符,把 True 变成 False,False 变成 True。

    五、空值

    空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值

    (或者# -*- coding:utf-8 -*- )
    #coding:utf-8     // 如下字符串包含中文,如果不加这一行,报错:SyntaxError: Non-ASCII character 
    print('hello worlds打发')
    
    
    print
    print 'hello,python.'
    print 'hello,','python.'   //遇到逗号“,”会输出一个空格
    print ('hello,python.')
    print ('hello,'+'python.')
    

    结果

    注释

    Python的注释以 # 开头。

    变量

    在Python程序中,变量是用一个变量名表示,变量名必须是大小写英文、数字和下划线(_)的组合,且不能用数字开头。

    在Python中,等号=是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量。

    a = 123    # a是整数
    print a
    a = 'imooc'   # a变为字符串
    print a
    

    这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。

    静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。例如Java是静态语言,赋值语句如下(// 表示注释):

    int a = 123; // a是整数类型变量
    a = "mooc"; // 错误:不能把字符串赋给整型变量
    

    理解变量在计算机内存中的表示也非常重要。当我们写:a = 'ABC'时,Python解释器干了两件事情:

    1. 在内存中创建了一个'ABC'的字符串;

    2. 在内存中创建了一个名为a的变量,并把它指向'ABC'。

    也可以把一个变量a赋值给另一个变量b,这个操作实际上是把变量b指向变量a所指向的数据,例如下面的代码:

    a = 'ABC'
    b = a
    a = 'XYZ'
    print b    # b的值是'ABC',还是'XYZ'呢?
    

    执行a = 'ABC',解释器创建了字符串 'ABC'和变量 a,并把a指向 'ABC':

    执行b = a,解释器创建了变量 b,并把b指向 a 指向的字符串'ABC':

    执行a = 'XYZ',解释器创建了字符串'XYZ',并把a的指向改为'XYZ',但b并没有更改:

    所以,最后打印变量b的结果自然是'ABC'了。

    字符串

    字符串可以用''或者""括起来表示。字符串本身包含',用"",如果字符串包含",我们就可以用' '。

    如果字符串既包含'又包含"怎么办?这个时候,就需要对字符串的某些特殊字符进行“转义”,Python字符串用 \ 进行转义。

    比如要表示字符串 Bob said "I'm OK".
    可以写为:'Bob said \"I\'m OK\".'
    

    注意:转义字符 \ 不计入字符串的内容中。

    常用的转义字符还有:

    \n 表示换行
    \t 表示一个制表符
    \\ 表示 \ 字符本身
    

    如果要表示多行字符串,可以用'''...'''表示:

    '''Line 1
    Line 2
    Line 3'''
    
    Python中整数和浮点数

    Python的整数运算结果仍然是整数,浮点数运算结果仍然是浮点数。整数和浮点数混合运算的结果是浮点数。

    为什么要区分整数运算和浮点数运算呢?这是因为整数运算的结果永远是精确的,而浮点数运算的结果不一定精确,因为计算机内存再大,也无法精确表示出无限循环小数,比如 0.1 换成二进制表示就是无限循环小数。

    print 11/4    # 2
    print 11%4    # 3
    print 11.0/4   #2.75
    
    Python中布尔类型

    布尔运算在计算机中用来做条件判断,根据计算结果为True或者False,计算机可以自动执行不同的后续代码。

    在Python中,布尔类型还可以与其他数据类型做 and、or和not运算,请看下面的代码:

    a = True
    print a and 'a=T' or 'a=F'   # 输出a=T
    

    Python把0、空字符串''和None看成 False,其他数值和非空字符串都看成 True。

    要解释上述结果,又涉及到** and 和 or 运算的一条重要法则:短路计算**。

    1. 在计算 a and b 时,如果 a 是 False,则根据与运算法则,整个结果必定为 False,因此返回 a;如果 a 是 True,则整个计算结果必定取决与 b,因此返回 b。
    
    2. 在计算 a or b 时,如果 a 是 True,则根据或运算法则,整个计算结果必定为 True,因此返回 a;如果 a 是 False,则整个计算结果必定取决于 b,因此返回 b。
    
    list

    Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。

    构造list非常简单,按照上面的代码,直接用 [ ] 把list的所有元素都括起来,就是一个list对象。通常,我们会把list赋值给一个变量,这样,就可以通过变量来引用list:

    classmates = ['Michael', 'Bob', 'Tracy']
    

    由于Python是动态语言,所以list中包含的元素并不要求都必须是同一种数据类型,我们完全可以在list中包含各种数据:

    L = ['Michael', 100, True]
    

    一个元素也没有的list,就是空list:

    empty_list = []
    

    此外,list中又可以包含list

    fan = [["liz",12],
           ["tom",23],
           ["Lisa",24]]
    print type(fan)  # 输出fan的数据类型 
    
    Python 索引访问list
    L = ['hello', 'hi', 'bye']
    print L[0]    #输出hello
    
    倒序访问list

    我们可以用 -1 这个索引来表示最后一个元素

    L = ['hello', 'hi', 'bye']
    print L[-1]    #输出bye
    print L[-2]    # 输出hi
    print L[-3]    #  输出hello
    

    注意访问list,不要越界!

    添加新元素
    • 向list的尾部添加元素 append
    L = ['Adam', 'Lisa', 'Bart']
    L.append('Paul')
    print L    #输出 ['Adam', 'Lisa', 'Bart', 'Paul']
    

    或者

     L = L + ['hello']
     print L   # 输出 ['Adam', 'Lisa', 'Bart','hello'] 
    
    • 向list指定的位置插入新元素用insert( )方法,接受两个参数,第一个是索引号,第二个是新元素。
    L = ['Adam','Lisa','Bart']
    想把一个新元素Paul插入到Adam的前面,也就是说Paul将要放在第一位
    L.insert(0,'Paul')  # 或者L.insert(-3,'Paul')
    print L  # 输出['Paul', 'Adam', 'Lisa', 'Bart']
    
    从list删除元素

    pop()方法总是删掉list的最后一个元素,并且它还返回这个元素。

    L = ['Adam','Lisa','Bart','Paul']
    L.pop()   #输出Paul
    print L   #['Adam','Lisa','Bart']
    

    如果想要删除的元素不是最后一个,则需要指定它的索引

    # 比如想要删除Bart
    L = ['Adam','Lisa','Bart','Paul']
    L.pop(2)   #输出Bart
    print L   #['Adam','Lisa','Paul']
    

    还有del()方法

    fan = [["liz",12],
            ["tom",23],
            ["Lisa",24]]
    del(fan[1])
    print fan
    
    替换元素

    对list的某一个索引赋值,就可以直接用新的元素替换掉原来的元素,list包含的元素个数保持不变。

    L = ['Adam', 'Lisa', 'Bart']
    #想要将Adam和Bart的位置变换一下
    L[0] = 'Bart'
    print L  # 输出['Bart', 'Lisa', 'Bart']
    L[-1] = 'Adam'
    print L  # 输出 ['Bart', 'Lisa', 'Adam']
    
    tuple

    tuple和list非常类似,但是tuple一旦初始化就不能修改。访问也是通过下标,用小括号() 表示。

    t = ('Adam','Lisa','Bart')
    print t    # 输出('Adam','Lisa','Bart')
    

    这个 t 就不能改变了,tuple没有 append()方法,也没有insert()和pop()方法。

    获取 tuple 元素的方式和 list 是一模一样的,我们可以正常使用 t[0],t[-1]等索引方式访问元素,但是不能赋值成别的元素。

    创建单元素tuple

    包含0个元素的tuple,也就是空tuple,直接用()表示。

    t = ()
    print t  #输出()
    

    为避免歧义,单元素tuple要多加一个逗号“, ”

    t = (1,)
    print t  # 输出 (1,)
    

    多元素 tuple 加不加这个额外的“,”效果是一样的:

    t = (1, 2, 3,)
    print t   # 输出 (1, 2, 3)
    
    “可变”的tuple

    t有3个元素,'a','b'和一个list:['A', 'B']。list作为一个整体是tuple的第三个元素。

    t = ('a','b',['A','B'])
    print t[2]  #   输出 ['A','B']
    

    将list的两个元素改一改

    不是说tuple一旦定义后就不可变了吗?怎么现在又变了?


    tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每一个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!

    if语句

    直接上例子:

    age  = 20
    if age >= 18:
        print 'Your age is',age
        print 'adult'
    print 'END'
    

    注意:Python的缩进规则,具有相同缩进的代码被视为代码块,进行缩进的时候,记住千万不要混用tab和空格,只许坚持用一种。
    if语句后接表达式,然后用: 表示代码块开始

    如果你在Python交互环境下敲代码,还要特别留意缩进,并且退出缩进需要多敲一行回车:

    >>> age = 20
    >>> if age >= 18:
    ...     print 'your age is', age
    ...     print 'adult'
    ...
    your age is 20
    adult
    
    if-else
    score = 55
    if score >= 60:
        print 'passed'
    else:
        print 'failed'
    
    if-elif-else
    score = 85
    if score >= 90:
        print 'excellent'
    elif score >= 80:
        print 'good'
    elif score >= 60:
        print 'passed'
    else:
        print 'failed'
    
    for循环
    L = ['Adam', 'Lisa', 'Bart']
    for name in L:
        print name
    
    while

    计算100以内奇数的和

    sum = 0
    x = 1
    while x < 100:
        sum = sum + x
        x += 2
    print sum
    
    break退出循环

    用for循环或者while循环,如果要在循环体内直接退出循环,可以使用break语句。

    # 计算1至100的整数和
    sum = 0
    x = 1
    while True:
        sum = sum + x
        x = x + 1
        if x > 100:
            break
    print sum
    
    continue继续循环

    在循环过程中,可以用break退出当前循环,还可以用continue跳过后续循环代码,继续下一次循环。

    # 计算0-100中的奇数的和
    sum = 0
    x = 0
    while True:
        x = x + 1
        if x > 100:
            break
        if x % 2 == 0:
            continue
        sum = sum + x
    print sum
    
    多重循环

    对100以内的两位数,请使用一个两重循环打印出所有十位数数字比个位数数字小的数,例如,23(2 < 3)。

    for x in [1,2,3,4,5,6,7,8,9]:
        for y in [1,2,3,4,5,6,7,8,9]:
            if x < y:
                print x * 10 +y
    
    dict
    d = {
        'Adam':95,
        'Lisa':85,
        'Bart': 59,
        'Paul':75
    }
    

    访问dict

    使用d[key]的形式来查找对应的value。

    d = {
        'Adam': 95,
        'Lisa': 85,
        'Bart': 59
    }
    print 'Adam:',d['Adam']
    print 'Lisa:',d['Lisa']
    print 'Bart:',d['Bart']
    # 使用dict本身提供的一个get方法,在Key不存在的时候,返回None
    print d.get('Bart')  #输出59
    print d.get('Paul')  #输出None  
    # 判断key是否存在,用 in 操作符
    if 'Lisa' in d:
        print d['Lisa']
    
    list的切片
    # 索引    0     1     2     3    4    5     6     7
    fam = ['ware', 12, 'Tom', 122, 'DS', 13, 'Lisa', 121]
    # [起点:终点]  起点对应的包含,终点对应的不包含
    print fam[3:5]  # 输出[122,'DS']
    print fam[1:4]   # 输出[12, 'Tom', 122]
    # 没有指定起点
    print fam[:4]  # 输出 ['ware', 12, 'Tom', 122]
    # 没有指定终点
    print fam[5:]  #输出 [13, 'Lisa', 121]
      
    
    关于list
    将x赋给y,拷贝的并不是list 即x的内容,而是x的引用,即地址,x和y在内存中指向的是同一个地址。不管改变x的值,还是y的值,打印出俩者的值都是一样的,因为它们是同一个list。
    
    要想完全创建一个新的list,和x一样的list,可以通过list(x) 或者list的切片方式x[:]
    
    函数

    list中的方法

    # 获取某个元素的索引
    L = ['Lisa','Paul','Bart','Paul']
    L.index('Bart') # 输出2 
    # 某个元素在list中出现的次数
    L.count('Paul')  # 2
    

    str的方法

    将字符串的首字母大写
    sister = 'lis'
    print sister.capitalize()   #输出Lis
    # 替换某些字符
    sister = sister.replace('s','sa')
    print sister   #输出lisa
    # 获取某个字母在字符串中的索引
    print sister.index('i')   # 1
    

    相关文章

      网友评论

          本文标题:Python基础知识总结

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