zoukankan      html  css  js  c++  java
  • Python基础

     

    1、数字

    int(整型)
    
      在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647
      在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
    long(长整型)
      跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
      注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。
    float(浮点型)
      浮点数用来处理实数,即带有小数的数字。类似于C语言中的double类型,占8个字节(64位),其中52位表示底,11位表示指数,剩下的一位表示符号。
    complex(复数)
      复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。
    注:Python中存在小数字池:-5 ~ 257  

    2、布尔值

      真或假
      1 或 0
      True 或 False

    3、字符串

    基本操作:
    # 1.字符串长度
    a='hello world'
    print len(a)   # 11
    
    # 2、字符串中字母大小写转换
    a = 'HELLO WORLD'
    print a.lower()  # 转换为小写 hello world
    a = 'hello world'
    print a.upper()  # 转换为大写 HELLO WORLD
    a='hello world'
    print a.capitalize() # 首字母大写 Hello world
    a = 'Hello World'
    print a.swapcase() # 大小写互换 hELLO wORLD
    
    # 3.将字符串放入中心位置可指定长度以及位置两边字符
    a = 'hello world'
    print a.center(20,'-')             # ----hello world-----
    print len('----hello world-----')  # 20
    
    # 4.删除空白
    # str.strip():删除字符串两边的空格
    a = '   hello   '
    b = a.strip()
    print b
    # str.lstrip():删除字符串左边空格
    a = '   hello'
    b = a.lstrip()
    print b
    # str.rstrip():删除字符串右边的空格
    a = 'hello   '
    b = a.rstrip()
    print b
    
    # 5.分割:前中后三部分
    a = 'hello world'
    print a.partition(' ')  # ('hello', ' ', 'world')
    print a.partition('o')  # ('hell', 'o', ' world')
    
    # 6.复制字符串
    a = 'hello'
    b = a
    print a,b     # hello hello
    
    # 7.字符串拼接
    # A. +:拼接2个字符串
    a = 'hello '
    b = 'world'
    print a + b    # hello world
    注:此方法又称为 "万恶的加号",因为使用加号连接2个字符串会调用静态函数string_concat(register PyStringObject *a ,register PyObject * b),
    在这个函数中会开辟一块大小是a+b的内存的和的存储单元,然后将a,b字符串拷贝进去。如果是n个字符串相连,那么会开辟n-1次内存,是非常耗费资源的。
    
    # B. str.join:连接2个字符串,可指定连接符号
    a = ["hello", "world"]
    b = "******".join(a)
    print b        # hello******world
    a = ("hello", "world")
    b = "######".join(a)
    print b        # hello######world
    
    # 8.查找字符串(检测字符串中是否包含子字符串str,可指定范围)
    # str.index 和str.find 功能相同,区别在于find()查找失败会返回-1,不会影响程序运行。一般用find!=-1或者find>-1来作为判断条件。
    a = 'hello world'
    print a.index('w')   # 6
    print a.index('x')   # ValueError: substring not found
    a = 'hello world'
    print a.find('w')   # 6
    print a.find('x')   # -1
    
    # 9.是否包含指定字符串(in |not in)
    a = 'hello world'
    if 'hello' in a:
        print 'in'
    if 'qwe' not in a:
        print 'not in'
    
    # 10. 字符串统计
    a = 'hello world'
    print a.count('l')  # 3
    
    # 11.字符串的测试、判断函数 结果是布尔型
    # startswith() 以...开头
    print 'Hello World'.startswith('H') # True
    print 'hello world'.startswith('A') # False
    # endswith() 以...结尾
    print 'Hello World'.endswith('d') # True
    print 'hello world'.endswith('D') # False
    # islower() 字符串中的字母是否全是小写
    print 'Hello World'.islower() # False
    print 'hello world'.islower() # True
    # isupper() 字符串中字母是否全是大写
    print 'Hello World'.isupper() # False
    print 'hello world'.isupper() # False
    # istitle()是否是首字母大写的(会对每个进行判断)
    print 'Hello World'.istitle() # True
    print 'Hello world'.istitle() # False
    
    # 12.字符串切片(顾头不顾尾)
    使用一对方括号、起始偏移量start、终止偏移量end 以及可选的步长step 来定义一个分片。
    格式: [start:end:step]
    [:] 提取从开头(默认位置0)到结尾(默认位置-1)的整个字符串
    [start:] 从start 提取到结尾
    [:end] 从开头提取到end - 1
    a = '0123456789'
    print a[0:3]     #截取第一位到第三位的字符(0可省,等价于 print a[:3])
    print a[:]       #截取字符串的全部字符
    print a[6:]      #截取第七个字符到结尾
    print a[:-3]     #截取从头开始到倒数第三个字符之前
    print a[2]       #截取第三个字符
    print a[-1]      #截取倒数第一个字符
    print a[::-1]    #字符串倒序
    print a[-3:-1]   #截取倒数第三位与倒数第一位之前的字符
    print a[-3:]     #截取倒数第三位到结尾
    print a[:-5:-3]  #逆序截取,截取倒数第五位数与倒数第三位数之间
    
    # 13.切割
    a = 'hello world'
    print a.split(' ')  # ['hello', 'world']
    print a.split('o')  # ['hell', ' w', 'rld']
    
    # 14.替换
    a = 'hello world'
    print a.replace(' ', 'my') # hellomyworld
    print a.replace('hello', 'my') # my
    
    # 15.根据换行执行分割
    a = 'hello
    world'
    print a.splitlines()  # ['hello', 'world']
    # 16.索引:str[下标]
    a = 'hello world'
    print a[0] # 从0开始

    列表和元组的主要不同在于:列表是可以修改的,而元组不可以。
    Python支持一种数据结构的基本概念,名为容器(container)。容器基本上就是可包含其他对象的对象。两种主要的容器是序列(如列表和元组)和映射(如字典)。在序列中,每个元素都有编号,而在映射中,每个元素都有名称(也叫键)。

    4、列表

    基本操作:

    # 1.索引(第一个索引是0,第二个是1,以此类推),可以使用索引来获取元素,这种索引方式适用于所有序列。
    当你使用负数索引时,Python将从右(即最后一个元素)开始往左数,因此-1是最后一个元素的位置。
    可以直接对其执行索引操作,无需先将其赋给变量。
    my_list = ['a', 'b', 'c', 'd', 'e']
    print my_list[0]   # a
    print my_list[3]   # d
    
    # 2.切片
    my_list = ['a', 'b', 'c', 'd', 'e']
    print my_list[1:]      # 除了第一个元素之外的其他元素     ['b', 'c', 'd', 'e']
    print my_list[:-1]     # 除了最后一个元素之外的其他元素   ['a', 'b', 'c', 'd']
    # 列表的翻转
    # 方式一:
    print my_list[::-1]    # ['e', 'd', 'c', 'b', 'a']
    # 方式二:
    my_list.reverse()
    print my_list          # ['e', 'd', 'c', 'b', 'a']
    
    # 3.重复
    my_list = ['a', 'b', 'c', 'd', 'e']
    print my_list * 2              # ['a', 'b', 'c', 'd', 'e', 'a', 'b', 'c', 'd', 'e']
    
    # 4.连接
    my_list1 = ['a', 'b', 'c', 'd', 'e']
    my_list2 = ['a', 'b', 'c', 'd', 'e']
    print my_list1 + my_list2      # ['a', 'b', 'c', 'd', 'e', 'a', 'b', 'c', 'd', 'e']
    
    # 5.是否包含(in |not in)
    my_list = ['a', 'b', 'c', 'd', 'e']
    print 'a' in my_list        # True
    print 'a' not in my_list    # False
    
    # 6.遍历
    my_list = ['a', 'b', 'c', 'd', 'e']
    for i in my_list:
        print i
    # a
    # b
    # c
    # d
    # e
    
    # 7.列表的增删改查操作
    
    # 增加
    my_list = ['a', 'b', 'c', 'd', 'e']
    my_list.append('f')           # append:追加 追加一个元素到列表中(末尾位置添加)
    print my_list                 # ['a', 'b', 'c', 'd', 'e', 'f']
    my_list = ['a', 'b', 'c', 'd', 'e']
    my_list.extend(['f', 'g'])    # extend:拉伸 追加多个元素到列表中(末尾位置添加)
    print my_list                 # ['a', 'b', 'c', 'd', 'e', 'f', 'g']
    my_list = ['a', 'b', 'c', 'd', 'e']
    my_list.insert(1, 'bb')       # insert:在指定索引位置插入元素
    print my_list                 # ['a', 'bb', 'b', 'c', 'd', 'e']
    
    # 删除(可以用del语句、pop()方法、remove()方法进行删除。)
    my_list = ['a', 'b', 'c', 'd', 'e']
    del my_list[1]                # del可以删除任意已知位置的列表元素,从内存中删除列表.
    print my_list                 # ['a', 'c', 'd', 'e']
    # pop()可以传递索引值,也可在括号里指定索引,来删除指定位置的列表元素,如果不指定索引,默认删除最后一个元素。
    my_list = ['a', 'b', 'c', 'd', 'e']
    print my_list.pop()                  # e
    print my_list                        # ['a', 'b', 'c', 'd']
    my_list = ['a', 'b', 'c', 'd', 'e']
    print my_list.pop(1)                 # b
    print my_list                        # ['a', 'c', 'd', 'e']
    my_list = ['a', 'b', 'c', 'd', 'e']
    my_list.remove('a')                  # remove()不需要知道元素位置,根据元素的值即可删除元素。
    print my_list                        # ['b', 'c', 'd', 'e']
    
    # 修改
    my_list = ['a', 'b', 'c', 'd', 'e']
    my_list[0] = 'aaa'          # 通过索引,重新赋值
    print my_list               # ['aaa', 'b', 'c', 'd', 'e']
    my_list = ['a', 'b', 'c', 'd', 'e']
    print my_list[:2]           # ['a', 'b']
    my_list[:2] = ['aaa','bbb'] # 通过切片
    print my_list               # ['aaa', 'bbb', 'c', 'd', 'e']
    
    # 查看
    my_list = ['a', 'b', 'c', 'd', 'e']
    print my_list.count('a')    # 1 查看列表中元素出现的次数
    print my_list.index('a')    # 0 查看指定元素的索引值
    print my_list[0]            # a 查看指定索引的元素值
    
    # 8.长度
    my_list = ['a', 'b', 'c', 'd', 'e']
    print len(my_list)          # 5
    # 9.排序
    my_list = ['d', 'c', 'b', 'a', 'e']
    my_list.reverse()           # reverse列表反转排序:是把原列表中的元素顺序从左至右的重新存放,而不会对列表中的参数进行排序整理。
    print my_list               # ['e', 'a', 'b', 'c', 'd']
    
    # sort排序方法是直接修改原列表list排序方法。
    my_list = ['d', 'c', 'b', 'a', 'e']
    my_list.sort()              # 正序排序
    print my_list               # ['a', 'b', 'c', 'd', 'e']
    my_list = ['d', 'c', 'b', 'a', 'e']
    my_list.sort(reverse=True)  # 倒序排序
    print my_list               # ['e', 'd', 'c', 'b', 'a']
    
    # sorted()方法即可以保留原列表,又能得到已经排序好的列表。
    my_list = ['d', 'c', 'b', 'a', 'e']
    print sorted(my_list)       # ['a', 'b', 'c', 'd', 'e']
    print my_list               # ['d', 'c', 'b', 'a', 'e'] 

    5、元组

    基本操作:
    # 1.特性
    # 元组如果只有一个元素的时候,后面一定要加逗号,否则数据类型不确定
    my_tuple1 = ('a')
    my_tuple2 = ('a',)
    print type(my_tuple1), type(my_tuple2)
    # <type 'str'> <type 'tuple'>
    
    # 2.拼接元组
    my_tuple1 = ('a', 'b', 'c', 'd', 'e')
    my_tuple2 = ('a', 'b', 'c', 'd', 'e')
    print my_tuple1 + my_tuple1     # ('a', 'b', 'c', 'd', 'e', 'a', 'b', 'c', 'd', 'e')
    
    # 3.重复
    my_tuple = ('a', 'b', 'c', 'd', 'e')
    print my_tuple * 2              # ('a', 'b', 'c', 'd', 'e', 'a', 'b', 'c', 'd', 'e')
    
    # 4.len 求元组的元素个数
    my_tuple = ('a', 'b', 'c', 'd', 'e')
    print(len(my_tuple))            # 5
    
    # 5.in| not 判断是否包含元素
    
    # 6.元组的增删改查操作(元组本身不能增删改查,但是如果元组里面包含可变数据类型,可以间接修改元组的内容)
    my_tuple = ('a', ['b', 'c'], 'd', 'e')
    # my_tuple[0] = 'aa' 如此执行会报错
    my_tuple[1][0] = 'bb'
    print my_tuple    # ('a', ['bb', 'c'], 'd', 'e')
    
    my_tuple = ('a', ['b', 'c'], 'd', 'e')
    my_tuple[1].append('cc')
    print my_tuple    # ('a', ['b', 'c', 'cc'], 'd', 'e')
    
    my_tuple = ('a', ['b', 'c'], 'd', 'e')
    my_tuple[1].remove('c')
    print my_tuple    # ('a', ['b'], 'd', 'e')
    
    # 7.计算,max,min,sum
    my_tuple = ('a', 'b', 'c', 'd', 'e')
    print(max(my_tuple))  # e
    print(min(my_tuple))  # a
    # sum 注意如果元组里面不是全是数值是无法求和的
    
    # 8.排序和反转,不支持:sort(),reverse(),支持:sorted()
    my_tuple = ('d', 'c', 'b', 'a', 'e')
    print sorted(my_tuple)        # ['a', 'b', 'c', 'd', 'e']
    print my_tuple                # ('d', 'c', 'b', 'a', 'e')
    # 注:不改变元组中元素的位置,只是临时排序,是可以的
    
    # 9.查找,index
    my_tuple = ('a', 'b', 'c', 'd', 'e')
    print(my_tuple.index('a'))     # 0
    
    # 10.统计出现的次数 count
    my_tuple = ('a', 'b', 'c', 'd', 'e')
    print(my_tuple.count('a'))     # 1

    6、字典(无序)

    基本操作:

    注:
    # 字典中的 key 不允许重复
    # 在使用 {} 创建字典时,{} 应包含多个 key-value 对,key 与 value 之间用英文冒号隔开;多个 key-value 对之间用英文逗号隔开。
    
    字典的基本用法
    # 应牢记字典包含多个 key-value 对,而 key 是字典的关键数据,因此程序对字典的操作都是基于 key 的。基本操作如下:
    # 1.通过 key 访问 value 。
    my_dict = {'a': 1, 'b': 2, 'c': 3}
    print my_dict['a']                    # 1
    
    # 注 没有添加,有修改
    # 2.通过 key 添加 key-value 对。
    my_dict = {'a': 1, 'b': 2, 'c': 3}
    my_dict['d'] = 4
    print my_dict                         # {'a': 1, 'c': 3, 'b': 2, 'd': 4}
    
    # 3.通过 key 修改 key-value 对。
    my_dict = {'a': 1, 'b': 2, 'c': 3}
    my_dict['a'] = 11
    print my_dict                         # {'a': 11, 'c': 3, 'b': 2}
    
    # 4.通过 key 删除 key-value 对。
    my_dict = {'a': 1, 'b': 2, 'c': 3}
    del my_dict['a']
    print my_dict                         # {'c': 3, 'b': 2}
    
    # 5.通过 key 判断指定 key-value 对是否存在(in | not in)。
    my_dict = {'a': 1, 'b': 2, 'c': 3}
    print 'd' in my_dict                  # False
    print 'd' not in my_dict              # True
    
    字典的常用方法
    # 1.字典由 dict 类代表,因此我们可使用 dir(dict) 来查看该类包含哪些方法。
    
    # 2.clear()方法: clear() 用于清空字典中所有的 key-value 对,对一个字典执行 clear() 方法之后,该字典就会变成一个空字典。
    my_dict = {'a': 1, 'b': 2, 'c': 3}
    # # 清空 my_dict 所有 key-value 对
    my_dict.clear()
    print my_dict              # {}
    
    # 3.get()方法: get() 方法其实就是根据 key 来获取 value,它相当于方括号语法的增强版,当使用方括号语法访问并不存在的 key 时,字典会引发 KeyError 错误;
    # 但如果使用 get() 方法访问不存在的 key,该方法会简单地返回 None,不会导致错误。
    my_dict = {'a': 1, 'b': 2, 'c': 3}
    # # 获取'a'对应的 value
    print my_dict.get('a')     # 1
    print my_dict.get('d')     # None
    # print my_dict['d']       # KeyError
    
    # 4.update()方法: update() 方法可使用一个字典所包含的 key-value对 来更新己有的字典。
    # 在执行 update() 方法时,如果被更新的字典中己包含对应的 key-value 对,那么原 value 会被覆盖;如果被更新的字典中不包含对应的 key-value 对,则该 key-value 对被添加进去。
    my_dict1 = {'a': 1, 'b': 2, 'c': 3}
    my_dict2 = {'d': 4, 'e': 5, 'f': 6}
    my_dict1.update(my_dict2)
    print my_dict1             # {'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'f': 6}
    
    my_dict1 = {'a': 1, 'b': 2, 'c': 3}
    my_dict2 = {'a': 4, 'b': 5, 'f': 6}
    my_dict1.update(my_dict2)
    print my_dict1             # {'a': 4, 'c': 3, 'b': 5, 'f': 6}
    # 从上面的执行过程可以看出,由于被更新的 dict 中己包含 key 为'a'与'b'的 key-value 对,因此更新时该 key-value 对的 value 将被改写;
    # 但如果被更新的 dict 中不包含 key 为'f'的 key-value 对,那么更新时就会为原字典增加一个 key-value 对。
    
    # 5.items()、keys()、values() : 分别用于获取字典中的所有 key-value 对、所有 key、所有 value。如下代码示范了这三个方法的用法:
    my_dict = {'a': 1, 'b': 2, 'c': 3}
    # 获取字典所有的key-value对
    ims = my_dict.items()
    print ims                  # [('a', 1), ('c', 3), ('b', 2)]
    print type(ims)            # <type 'list'>
    
    # 获取字典所有的key
    my_dict = {'a': 1, 'b': 2, 'c': 3}
    kys = my_dict.keys()
    print kys                  # ['a', 'c', 'b']
    print type(kys)            # <type 'list'>
    
    # 获取字典所有的value
    my_dict = {'a': 1, 'b': 2, 'c': 3}
    val = my_dict.values()
    print val                  # [1, 3, 2]
    print type(val)            # <type 'list'>
    # 在 Python 2.x 中,items()、keys()、values() 方法的返回值本来就是列表,完全可以不用 list() 函数进行处理。当然,使用 list() 函数处理也行,列表被处理之后依然是列表。
    
    # 6.pop方法: pop() 方法用于获取指定 key 对应的 value,并删除这个 key-value 对。如下方法示范了 pop() 方法的用法:
    my_dict = {'a': 1, 'b': 2, 'c': 3}
    print my_dict.pop('a')     # 1   会获取 'a' 对应的 value,并删除该 key-value 对。
    print my_dict              # {'c': 3, 'b': 2}
    
    # 7.popitem()方法: popitem() 方法用于随机弹出字典中的一个 key-value 对。
    # 此处的随机其实是假的,正如列表的 pop() 方法总是弹出列表中最后一个元素,实际上字典的 popitem() 其实也是弹出字典中最后一个 key-value 对。
    # 由于字典存储 key-value 对的顺序是不可知的,因此开发者感觉字典的 popitem() 方法是“随机”弹出的,但实际上字典的 popitem() 方法总是弹出底层存储的最后一个 key-value 对。
    my_dict = {'a': 1, 'b': 2, 'c': 3}
    print my_dict.popitem()    # ('a', 1)
    print my_dict              # {'c': 3, 'b': 2}
    
    # 8.setdefault()方法也用于根据 key 来获取对应 value 的值。但该方法有一个额外的功能,即当程序要获取的 key 在字典中不存在时,该方法会先为这个不存在的 key 设置一个默认的 value,然后再返回该 key 对应的 value。
    # 总之,setdefault() 方法总能返回指定 key 对应的 value;如果该 key-value 对存在,则直接返回该 key 对应的 value;如果该 key-value 对不存在,则先为该 key 设置默认的 value,然后再返回该 key 对应的 value。
    
    my_dict = {'a': 1, 'b': 2, 'c': 3}
    # 设置默认值,该key在dict中不存在,新增key-value对
    print my_dict.setdefault('d', 4)       # 4
    print my_dict                          # {'a': 1, 'c': 3, 'b': 2, 'd': 4}
    # # 设置默认值,该key在dict中存在,不会修改dict内容
    my_dict = {'a': 1, 'b': 2, 'c': 3}
    print my_dict.setdefault('c', 4)       # 3
    print my_dict                          # {'a': 1, 'c': 3, 'b': 2}
    
    # 9.fromkeys()方法使用给定的多个 key 创建字典,这些 key 对应的 value 默认都是 None;也可以额外传入一个参数作为默认的 value。该方法一般不会使用字典对象调用(没什么意义),通常会使用 dict 类直接调用。
    
    # 使用列表创建包含2个key的字典
    a_dict = dict.fromkeys(['a', 'b'])
    print(a_dict)                          # {'a': None, 'b': None}
    # 使用元组创建包含2个key的字典
    b_dict = dict.fromkeys((13, 17))
    print(b_dict)                          # {13: None, 17: None}
    # 使用元组创建包含2个key的字典,指定默认的value
    c_dict = dict.fromkeys((13, 17), 'good')
    print(c_dict)                          # {13: 'good', 17: 'good'}
  • 相关阅读:
    Java安全之JNDI注入
    Visual Studio 2019 升级16.8之后(升级.Net 5),RazorTagHelper任务意外失败
    .Net Core 3.1升级 .Net 5后出现代码错误 rzc generate exited with code 1.
    重走py 之路 ——普通操作与函数(三)
    重走py 之路 ——字典和集合(二)
    设计模式结(完结篇)
    重走py 之路 ——列表(一)
    RestfulApi 学习笔记——分页和排序(五)
    RestfulApi 学习笔记——查询与过滤还有搜索(五)
    Android开发 Error:The number of method references in a .dex file cannot exceed 64K.Android开发 Error:The number of method references in a .dex file cannot exceed 64K
  • 原文地址:https://www.cnblogs.com/mcladyr/p/13523360.html
Copyright © 2011-2022 走看看