zoukankan      html  css  js  c++  java
  • 第三章.数据类型

    3.1 整型(int)

    • 整型的长度

      py2:int/long

      py3:int

    • 整除

      py2:做整除后商只保留整数

      py3:做整除后商保留全部

    3.2 布尔值(bool)

    布尔值用于表示真假,只有两种结果True/False

    转换问题

    • str --->bool 只有""为False,其他均为True

    • int --->bool 只有0为False,其他均为True

    • list--->bool 只有[]为False,其他均为True

    • tuple--->bool 只有()为False,其他均为True

    • dict--->bool 只有{}为False,其他均为True

    • set--->bool 只有set()为False,其他均为True

    • None--->bool 为False

    3.3 字符串(str)

    3.3.1字符串的特有方法

    字符串是写代码中最常见的,reduce

    1.变大写 upper

    v = "alexALEX"
    v1 = v.upper()
    print(v1)
    v2 = v.isupper()  #判断是否全部大写
    print(v2)

    2.变小写 lower

    v = "alexALEX"
    v1 = v.lower()
    print(v1)
    v2 = v.islower()  #判断是否全部小写
    print(v2)

    3.判断是否为数字 isdecimal

    以后推荐用 isdecimal 判断是否是10进制的数。

    v = '1'
    # v = '二'
    # v = '②'
    v1 = v.isdigit()   # '1'-> True; '二'-> False; '②' --> True
    v2 = v.isdecimal() # '1'-> True; '二'-> False; '②' --> False
    v3 = v.isnumeric() # '1'-> True; '二'-> True; '②' --> True
    print(v1,v2,v3)

    4.分割 split

    v = "alexALEX"
    b = v.split('l')
    print(b)    #['a', 'exALEX']切割后得到的是一个列表
    v = "alexALEX"
    b = v.rsplit('l')
    print(b)

    5.替换 replace

    v = "alexALEX"
    b = v.replace('l','*')
    print(b)

    6.去空格/ 去换行 /去制表符 /去指定字符串 strip

    • 去空格

      v = "       alexALEX          "
      v1 = v.strip()  #去全部空格
      print(v1)
      v2 = v.lstrip()  #去左边空格
      print(v2)
      v3 = v.rstrip()  #去右边空格
      print(v3)
      
    • 去换行

      v2 = "alex
      qwer
      "
      print(v2)  #alex qwer
    • 去制表符

      制表符 :在字符串中使用,一般放在文章开头,做缩进用

      v3 = "	alex"
      print(v3.strip())
    • 去指定字符串

      去掉字符串两边所有a和l

      v4 = "aldaexaaall"
      print(v4.strip('al'))  #daex

    7.以某某开头startswith

    name = 'qwertyuiop'
    if name.startswith('qw'):
       print(name)

    8.以某某结尾endswith

    name = 'qwertyuiop'
    if name.endswith('qw'):
       print('是')
    else:
       print('不是')

    9.占位符format

    name = '我叫{},年龄:{}'.format('老男孩',73)
    print(name)

    10.编码encode

    name = '张三'
    v = name.encode('gbk')
    print(v)

    11.添加join

    name = 'qwertyuiop'
    v = '_'.join(name)
    print(v)   #q_w_e_r_t_y_u_i_o_p
    name = ['qwertyuiop',1,2]     #name中含有数字和字符串
    name2 = []
    for item in name:
       name2.append(str(item))
    v = '_'.join(name2)     #要想使用join,列表/集合内部必须全为字符串
    print(v)
    name = {'k1':'1','k2':'2'}
    v = '_'.join(name)   #默认取字典的键
    print(v)   #k1_k2

    12.其他

    3.3.2字符串格式化

    • %s:可代表所有数据类型

      #法一:
      msg = "我是%s,年龄%s" %('alex',19,)
      print(msg)
      #法二:
      msg = "我是%(n1)s,年龄%(n2)s" % {'n1': 'alex', 'n2': 123, }
      print(msg)
      #法三:
      # v2 = "我是{name},年龄{age}".format(name='alex',age=18)
      #法四:
      v2 = "我是{name},年龄{age}".format(**{'name':'alex','age':18})
      print(v2)
    • %d:专门代表整型

    • 换行符

    3.4列表(list)

    列表中可以有字符串,整数,布尔,列表,元组,字典,集合,None。列表是有序的,可重复,列表是可变的。

    1.append

    在列表最后一个元素后追加一个元素,该元素可以是字符串,整数,布尔,列表,元组,字典,集合,None

    user = ['q','w',1]
    v = {1,2,3,4}
    user.append(v)
    print(user)   #['q', 'w', 1, {1, 2, 3, 4}]

    2.insert

    在指定位置添加一个元素

    user = ['q', 'w', 1, {1, 2, 3, 4}]
    user.insert(0,666)
    print(user)

    3.remove

    只是移除,移除的后面加的是列表中元素

    user = ['q', 'w', 1, {1, 2, 3, 4}]
    user.remove('w')
    print(user)

    4.pop

    移除,删除后将这个被删除的值赋给另一变量,pop后加入的是索引位置

    user = ['q', 'w', 1, {1, 2, 3, 4}]
    data = user.pop(1)
    print(user)

    5.clear

    清空,运行后得到的是一个空列表

    user = ['q', 'w', 1, {1, 2, 3, 4}]
    user.clear()
    print(user)   #[]

    6.extend ()

    将括号里面的元素循环添加到前面

    v1 = ['q', 'w', 1]
    v2 = {1, 2, 3, 4}
    v1.extend(v2)
    print(v1)

    7.reverse 反转

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

    8.sort 排序

    v = [11,22,33,124,55]
    v.sort()    #v.sort(reverse=False)从小到大(默认)
    print(v)    #v.sort(reverse=True)从大到小

    3.5元组(tuple)

    元组是不可变的

    3.6字典(dict)

    字典是可变的,无序

    info = {"name":'张三','age':18,'gender':'男','hobby':'打球'}
    for item in info:
    print(item)        #默认得到的是字典的所有键

    1.keys 取所有键

    info = {"name":'张三','age':18,'gender':'男','hobby':'打球'}
    for item in info.keys():
    print(item)        #得到的结果是一个个字符串

    2.values 取所有值

    info = {"name":'张三','age':18,'gender':'男','hobby':'打球'}
    for item in info.values():
    print(item)       #得到的结果是一个个字符串

    3.items 取所有键值对

    info = {"name":'张三','age':18,'gender':'男','hobby':'打球'}
    for item in info.items():
    print(item)
    #('name', '张三')
    #('age', 18)
    #('gender', '男')
    #('hobby', '打球')   得到的结果是一个个元组

    4.update 字典中存在添加的字典中的键就更新,不存在就添加

    info = {"name":'张三','age':18,'gender':'男','hobby':'打球'}
    info.update({'age':19})
    print(info)     #{'name': '张三', 'age': 19, 'gender': '男', 'hobby': '打球'}
    info = {"name":'张三','age':18,'gender':'男','hobby':'打球'}
    info.update({'身高':178})
    print(info)     #{'name': '张三', 'age': 18, 'gender': '男', 'hobby': '打球', '身高': 178}

    5.get

    获取字典中该键对应的值,如果字典中不存在该键,就输出None,

    info = {"name":'张三','age':18,'gender':'男','hobby':'打球'}
    v = info.get('k1111')
    print(v)      #None

    如果获取字典中该键对应的值,如果字典中不存在该键,就输出后面的值

    info = {'K1':'V1','K2':'V2','K3':'V3'}
    v1 = info.get('k1111',666)
    print(v1)    #666

    6.pop

    删除后将该删除的值赋给另外一值

    info = {'K1':'V1','k2':'V2','K3':'V3'}
    v = info.pop('k2')
    print(info,v)   #{'K1': 'V1', 'K3': 'V3'} V2

    7.有序字典

    字典是无序的,但可以通过导入模块让其有序

    from collections import OrderedDict
    info = OrderedDict()
    info['k1'] = 123
    info['k2'] = 456
    print(info.keys())
    print(info.values())
    print(info.items())
    from collections import OrderedDict
    odic = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
    print(odic)
    for k in odic:
       print(k,odic[k])

    3.7集合(set)

    集合里面的元素都是不可变类型,可添加字符串,整型,布尔,元组,None

    1~3是对集合本身进行操作

    1.add 添加

    info = {'K1','k2','K3'}
    info.add('v1')
    print(info)   #{'v1', 'k2', 'K1', 'K3'}

    2.update 更新

    info = {'K1','k2','K3'}
    info.update({1,2,3,(4,5)})
    print(info)   #{1, 2, 3, (4, 5), 'k2', 'K1', 'K3'}

    3.discard 删除

    info = {'K1','k2','K3'}
    info.discard('K1')
    print(info)   #{'k2', 'K3'}

    4.union 并集

    v1 = {1,2,'张三'}
    v2 = {1,2,'李四'}
    result = v1.union(v2)
    print(result)   #{'张三', 1, 2, '李四'}

    5.intersection 交集

    v1 = {1,2,'张三'}
    v2 = {1,2,'李四'}
    result = v1.interestion(v2)
    print(result)   #{1,2}

    6.difference 差集

    v1 = {1,2,'张三'}
    v2 = {1,2,'李四'}
    result1 = v1.difference(v2)
    print(result1)     #{'张三'}
    result2 = v2.difference(v1)
    print(result2)     #{'李四'}

    7.pop

    8.symmetric_difference(对称差分)

    3.8 字节(bytes)

    字节类型

    3.9深浅拷贝

    • 浅拷贝:浅拷贝就是拷贝第一层

    • 深拷贝:深拷贝就是拷贝嵌套层次中所有可变类型

    3.10公共功能

    • 索引:(int,bool,set除外)

    • 切片:(int,bool,set除外)

    • 步长:(int,bool,set除外)

    • len:(int,bool除外)

      • str :字符串长度

      • list:列表内元素个数

      • tuple:元组内元素个数

      • dict:字典内键值对个数

      • set:集合内元素个数

      v = 'qwertyuiop'
      print(len(v))     #10
    • for循环(int,booi除外)

    • del(str,int,booi,tuple,set除外)

    • 修改(str,int,bool,tuple,set除外)

    3.11嵌套

     

    3.12内存相关

    • 内部修改

      v1 = [11,22,33]
      v1.append((44,55))
      print(v1)     #[11, 22, 33, (44, 55)]
    • 赋值

      v1 = [11,22,33]
      v2 = v1
      v1 = [1,2,3,4]
      print(v2)       #[11,22,33]
    • 查看内存地址

      v1 = [11,22,33]
      v2 = v1
      print(id(v1),id(v2))   #38544968 38544968二者内存地址一样
    • 几个特殊情况

      在python中认为所有字符串,数字-5~256内存地址相同

  • 相关阅读:
    ADB常用命令
    HttpClient4.x 使用cookie保持会话
    HttpClient发起Http/Https请求工具类
    MakeFile 文件的使用
    SQL连接查询和嵌套查询详解
    Linux中进程控制块PCB-------task_struct结构体结构
    Mysql数据库--语句整理/提升/进阶/高级使用技巧
    进程池分析
    mmap和shm共享内存的区别和联系
    IO多路复用模型之epoll实现机制
  • 原文地址:https://www.cnblogs.com/lilinyuan5474/p/10791749.html
Copyright © 2011-2022 走看看