• 1、python全栈之路数据类型


    一、数据类型

    数据类型,相同类的值(指定类的对象)具有相同的功能,功能保存在类中(只有一份)

    1、整数(int类)

       1,2,3,4.......99....

    bit_length()

    当前十进制用二进制表示时,最少使用的位数

    v = 15
    # 当前十进制用二进制表示时,最少使用的位数
    data = v.bit_length()
    print(v)
    print(data)

     

    2、布尔型(bool类)

    True 1

    False 0

    布尔值为False的情况:False : 0,None,'',{},[],()

    3、字符串(str类)

    字符串调用函数时,字符串本身原值不变

    3.1 字符串提供的功能

    3.1.1 upper()

    变大写

     

    3.1.2 lower()

    变小写

     

    3.1.3 capitalize()

    首字母变大写,其他变小写

     

    3.1.4 strip()

    去除首尾空格、换行、制表符、制定的内容

     

    示例:

     

    3.1.5 lstrip()

    去除左边空格

     

    3.1.6 rstrip()

    去除右边空格

     

    3.1.7 replace()

    替换

     

     

    3.1.8 split()

    分割

     

    3.1.9 isdecimal()

    判断当前字符串中是否全部都是数字

     

    示例:

    count = 0
    v = "abc123fsdfa3f"
    for item in v:
        if item.isdecimal():
            count += 1
    print(count)

     

    3.1.10 join()

    连接列表的元素

     

    3.1.11 endswith()startswith()

    print(name.endswith('SB'))#判断是否以'SB'结尾
    print(name.startswith('alex'))#判断是否以'alex'开头

     

    3.1.12 encode('utf-8gbk')

    把字符串转化成字节

     

    3.1.13 find()index()

    find()

    在字符串中查找,找不到返回-1

     

    index()

    在字符串中查找,找不到报错

     

    3.1.14 format()

    格式化字符串

    (1)

     

    (2)

     

    (3)

     

    (4)

     

    3.1.15 casefole()

    字符串变小写,包含小语种,lower()只能改变英文

     

    3.1.16 center(),ljust(),rjust()

    center():两边补字符

    ljust():右边补字符

    rjust():左边补字符

     

    3.1.17 count()

    计算个数

     

    3.1.18 expandtabs()

    可以联合换行符制表符使用,固定字符间隔长度

     

    # \n ,换行符
    # \t,制表符,相当于Tab缩进

    3.1.19 index()

    列表字符的索引

     

    3.1.20 isdigit()

    判断字符串的内容是否是纯数字

     

    3.1.21 isalpha()

    判断字符串的内容是否是纯字母

     

    3.1.22 isspace()

     

    3.2 公共功能

    3.2.1 len()

    计算当前字符串长度

     

    3.2.2 索引、下标

    #      -  单个值:v[0]

    #      -  多个值:v[起始位置:结束位置]

    #      -  多个值:v[起始位置:结束位置:步长]

    #      PS: -1表示最后

     

    示例:

    # 题: 列出v = "ASCII第一次以规范标准的型态发"
    # v = "ASCII第一次以规范标准的型态发"
    # length = len(v)
    # index = 0
    # while True:
    #     data = v[index]
    #     print(data)
    #     index += 1
    #     if index == length:
    #         break

    v = "ASCII第一次以规范标准的型态发"
    length = len(v)
    index = 0
    while index < length:
        data = v[index]
        print(data)
        index += 1

    3.2.3 循环 

    4int-bool-str转换

    int    89  90

    bool   True False

    str  'sdf' '7'

    4.1 str-->int

    示例:

    #加法计算器
    v1 = input("请输入第一个值:") # "54"
    v2 = input("请输入第二个值:")
    v3 = int(v1) + int(v2)
    print(v3)

     

    4.2 str-->bool

    空值字符串--False

    其他--True

     

    4.3 int-->str

    str(int)

     

    4.4 int-->bool

    0--False

    其他--True

     

    4.5 bool-->str

    str(bool)

    4.6 bool-->int

    True--1

    False--0

     

    4.7 示例

    # 面试题
    a = False or 2 > 3
    print(a)
    #有具体数字或者字符串时,输出数字或字符串
    a = 9 or 2 > 3
    print(a)
    a = "asdf" or 2 > 3
    print(a)

    5、列表(list类)

    可变的容器,本身是变化的

    5.1 list类中提供的功能

    5.1.1 append()

    在列表尾部追加一个值[修改本身值]

     

    示例:

    v = []
    while True:
        name = input("请输入用户名:")
        if name.lower() == 'q':
            break
        v.append(name)
        print(v)

     

    5.1.2 insert()

    在指定位置插入数据

    v = [11,22,33,44,"蒋毅"]
    v.insert(4,"孙骑兵")#4是下标
    print(v)

     

    5.1.3 reverse()

    v = [11,22,33,44]
    print(v)
    v.reverse()
    print(v)

     

    5.1.4 remove()delpop()

    删除

     

    pop()不指定位置默认删除最后一个,返回删除元素的值

     

    5.1.5 index()

    找参数的位置

     

    5.1.6 clear()

    清空列表

     

    5.1.7 sort()

    排序

    ASCII码排序

     

    5.1.8 extend()

    合并

     

    5.1.9 copy()

    复制、浅拷贝

     

    有一个特性:浅copy,copy第一层

    现在的需求是要输出的names2与第一行names定义的相同

    name1 = ["zhangyang","guyun","xiangpeng","xulang"]
    name2 = name1.copy()
    name1[1] = "古云"
    print(name1)
    print(name2)

     

    name1 = ["zhangyang","guyun","xiangpeng",["jack","alex"],"xulang"]
    name2 = name1.copy()
    name1[1] = "古云"
    name1[3][0] = "杰克"
    print(name1)
    print(name2)

     

    列表的特性

     

    与字符串或数字不同

     

    深拷贝

    import copy
    name1 = ["zhangyang","guyun","xiangpeng",["jack","alex"],"xulang"]
    name2 = copy.deepcopy(name1)
    name1[1] = "古云"
    name1[3][0] = "杰克"
    print(name1)
    print(name2)

     

    简述深浅拷贝

    #如果拷贝单层列表时,深浅拷贝都把原列表拷贝到了一个新的内存地址,所以原列表被修改新列表都不会被修改

    #如果拷贝多层列表时

        #浅拷贝只将原列表的第一层拷贝到了新的内存地址,新列表二层及以内的依然指向原列表的内存地址,所以原列表被修改,新列表的

        #第一层不会改变,二层及以内的会跟着新列表修改

        #深拷贝是将原列表的所有都拷贝到了新的内存地址,原列表被修改,新列表不会改变

    5.2 公共功能

    5.2.1 len()

    计算列表长度

     

    5.2.2 索引

     

    5.2.3 循环

    for

     

    5.2.4 替换

     

    5.2.5 删除

    del

     

    5.2.6 嵌套

    列表中的元素可以是:数字,字符串,布尔值,列表

    li = [11,22,[6,"88991",7],33,True,"蒋毅",55]
    val = li[2][1][-1]
    print(val)

    li[3] = 66
    print(li)

    li[2][2] = 77
    print(li)

    li[2][1] = 666
    print(li)

    li[5] = li[5].replace('蒋','江')
    li[5] = "江毅"
    print(li)

     

    5.3 删除补充

    删除列表元素时,会影响列表长度,从而使得索引取值时,容易出现错误。

     

    解决方法:

    # 解决方案一:
    li = [11, 22, 33, 44, 66] # 0
    new_list = []
    # 索引为奇数值,删除
    for i in range(0,len(li)):
        if i%2 == 0:
            new_list.append(li[i])
    li = new_list
    print(li)

     

    # 解决方案二:
    li = [11, 22, 33, 44, 66] # 0
    # 索引为奇数值,删除
    #倒序删除rang(4,-1,-1)
    for i in range(len(li)-1,-1,-1): # 4,0
        if i%2 == 1:
            del li[i]
    print(li)

     

    # 解决方案三:
    #切片+步长
    li = [11, 22, 33, 44, 66]
    #del li[0:4]
    del li[0:4:2]
    print(li)

     

    6、元组(tuple类)

    不可变的容器

    只有一个元素时,一定加逗号(1,)

    6.1 公共功能

    6.1.1 len()

     

    6.1.2 索引

     

    6.1.3 循环

    for

     

    6.1.4 嵌套

    v = (11,22,[11,22,33],33,(9,1,2,"alex"),44)#儿子不可变,孙子可能可变
    v[2][1] = "xxxxx"
    print(v)
    v[2].append("asdasd")
    print(v)

     

    7、字典(dict类)

    7.1 dict类中提供的功能

    7.1.1 get()

    根据key获取对应的值,key不存在默认取None

     

    7.1.2 keys()

     

    7.1.3 values()

     

    7.1.4 items()

     

    7.1.5 update()

    合并两个字典,如果有重复键则合并值,没有重复的键则添加值

     

    7.2 公共功能

    7.2.1 len()

     

    7.2.2 获取

     

    7.2.3 设置

    # key存在,则更新值
    # key不存在,则创建键值对
    v = {
        "k1":'v1', # 键值对
        "k2":'v2', # 键值对
    }
    v['kk1'] = 666
    v['k1'] = 777
    print(v)

     

    7.2.4 删除

    del

     

    7.2.5 循环

    for

     

    7.2.6 嵌套

    val = {
        'k1': 123,
        'k2': "asdf",
        'k3': True,
        'k4': [11,22,33],
        'k5': (1,2,3),
        'k6': {
            'kk1':'vv1',
            'kk2':'vv2',
        },
        'k7': [1,2,(8,6,2),{"k111":'vvv1'},5]
    }

    7.3 示例

    # 示例:
    user_list = [
        {'name':'老头','age': 18},
        {'name':'流量','age': 66},
        {'name':'wifi','age': 99},
    ]

    n = input("请输入姓名:")
    a = input("请输入年龄:")
    temp = {'name': n, 'age': int(a)}
    user_list.append(temp)
    for item in user_list:
        print(item['name'],item['age'])

     

    7.4 删除补充

    不要在循环当前字典的过程中,修改当前字典大小

    # 1dic = {'k1':"v1",'k2':'v2'}key="k1",键值对删除

     

    # 2dic = {'u1':"v1",'k2':'v2','k3':'v3'}key中存在k,键值对删除

    错误:

     

    正确:

    # 正确方式
    dic_key_list = []
    for key in dic:
        dic_key_list.append(key)

    for row in dic_key_list:
        if 'k' in row:
            del dic[row]
    print(dic)

     

    8、字节(bytes类)

    bytes

    一般网络传输和硬盘存储使用bytes类型

    8.1表现形式

    name = b'alex'

    name = b'\x12\x86\xdf\xdf\xa8\x34....'  #不在ascii表中的字符,中文字符

    8.2内部原理

    在硬盘内部存储以0101010形式存储,但是输出查看时以bytes形式显示

    utf-8gbk...

    utf-8

        一个字符三个字节,内部用二进制表示

    01100001      a

    01101100       l

    01100101      e

    01111000      x

    00000010 00000000 00000000 00000110 00000000 00000000  海娇

    gbk

    一个字符两个字节

    00000000 01100001      a

    00000000 01101100       l

    00000000 01100101      e

    00000000 01111000      x

    10000010 00000000          

    10000010 00100000          

    xxx

    00000000 00000000 01100001     a

    00000000 00000000 01101100     l

    00000000 00000000 01100101     e

    00000000 00000000 01111000     x

     

    9、浮点数(float类)

    #小数

        #有限小数

        #无限循环小数 3.33333 4.404404

    #无限不循环小数  派

    #浮点数

        #有限小数

    #无限循环小数 3.33333 4.404404

     

    10、复数(complex类)

    #复数 = #实数 #虚数

    #复数 = 实部 + 虚部

    #a+bj

     

    11、集合(set类)

    11.1 性质

    集合的元素无重复,可以做快速去重的方法

    集合是可变数据类型

    集合内部不能加可变数据类型,如列表,列表

    集合内部元素时不可变数据类型

    集合内部不能嵌套集合

    11.2 功能

    11.2.1 add()

    添加

     

    11.2.2 difference()difference_update()

    差集

    difference()

    不修改原集合,改变之后的集合赋给一个新的变量

     

    difference_update()

    直接修改原集合

     

    11.2.3 symmetric_difference()symmetric_difference_update()

    排除两个集合同时存在的值

    symmetric_difference()

    不修改原集合,改变之后的集合赋给一个新的变量

    symmetric_difference_update()

    直接修改原集合

     

    11.2.4 dicard()

    在集合中删除制定值

     

    11.2.5 intersection()intersection_update()

    求交集

    intersection()

    不修改原集合,改变之后的集合赋给一个新的变量

    intersection_update()

    直接修改原集合

     

    11.2.6 union()

    求并集

     

    11.2.7 isdisjoint()

    判断是否无交集

     

    11.2.8 issubset()issuperset()

    issubset() 是否是子集

    issuperset()是否是父集

     

    11.2.9 pop()remove()discard()

    删除集合的元素

    pop()

    删除元素并返回该元素

     

    remove()

    删除,如果元素不存在会报错

     

    discard()

    删除,如果元素不存在不会报错

     

    11.2.10 update()

    更新

     

    11.2.11 for循环

     

    11.2.12 len()

    长度

     

    11.3 各类型转换

     

  • 相关阅读:
    【POJ 2406】Power Strings(KMP循环节)
    【HDU 3746】Simpsons’ Hidden Talents(KMP求循环节)
    【CodeForces 672B】Different is Good
    【UVALive 4642】Malfatti Circles(圆,二分)
    【POJ 1269】判断两直线相交
    【POJ 2503】Babelfish(字符串)
    ZOJ 2676 Network Wars[01分数规划]
    A1261. happiness(吴确)[二元组暴力最小割建模]
    poj3469 Dual Core CPU
    2154: Crash的数字表格
  • 原文地址:https://www.cnblogs.com/xiaojinyu/p/7455123.html
Copyright © 2020-2023  润新知