zoukankan      html  css  js  c++  java
  • Important thing

    1 '''
    2     bit_length
    3 1   0000 0001   1
    4 2   0000 0010   2
    5 3   0000 0011   2
    6 '''

    # 类型转化注意点

    1 # int 转 str 无限制
    2 # str 转 int 只有字符串为数字的时候可以转
    3 # int 转 bool 只要是非零就是True else 为False
    4 # bool 转 int True为 1  False 为 0
    
    
    1 # str 转 bool  ''为False else 为True
    2 # if s:
    3 #    print("你输入的为空,请重新输入")
    4 #   可以判断s 是否为非空字符
    
    

    # 效率问题的选择
    1 '''
    2 while True: 的效率低于
    3 while 1:    因为少了转化
    4 '''
    
    

    # 字符串全部打印

    
    
    # s7 = s[:]
    # s8 = s[0:]
    # print(s7, s8)
    
    

    # 倒叙打印

    1 倒叙打印
    2 s = 'ABCDLSESRF'
    3 s14 = s[-1::-1]
    4 print(s14)
    # 每个隔开(特殊字符或者数字)的单词首字母大写
    
    
    1 # 每个隔开(特殊字符或者数字)的单词首字母大写
    2 s = 'alex*egon-wusir'
    3 print(s.title())
    4 
    5 s = 'fade,crazy*w4rri0r_songsong node_3'
    6 s4 = s.title()
    7 print(s4)
    
    

    # 测量字符串的元素个数 用len

    
    
    # 以什么开头 startswith 以什么结束 endswiith
    s = 'rainmZc'
    print(s.startswith('rai'))
    print(s.endswith("r", 3, 6))
    
    # 可以利用此功能来筛选符合条件的字符串
    if s.startswith('rainm'):
        print("handsome")
    else:
        pass
    # find 通过元素找索引,找不到返回-1
    # index通过元素找索引,找不到会报错

    # 逐个输出字符串元素
    1 # 逐个输出字符串元素
    2 s = "123dsf g123..官方给的412s"
    3 for i in s:
    4     print(i)
    5 name = input("请输入名字:")
    6 if 'sb'.upper() in name.upper():
    7     print("你才是{}".format(name))
    8 else:
    9     print(1111)
    
    
    # format的三种用法
    1 name = "{} is very {} and {}".format('Rainm', 'handsome', 'handsome')
    2 print(name)
    3 # 按顺序输出
    4 name = "{1} is very {0} and {0}".format("handsome", "Rainm")
    5 print(name)
    6 name = "{name} is very {a} and {a}".format(a="handsome", name="Rainm")
    7 print(name)
    
    
    
    # int: bit_length 测量整型用二进制的最小位数
    # bool: True 或者 False
    # str -> bool 非空字符时为False

    # capitalize 首字母大写
    # upper 全部大写
    # lower 全部小写
    # find 通过元素查找索引,找不到返回-1
    # index 通过元素查找索引,找不到报错
    # swapcase 字符串中英文字符的大小写翻转

    # replace 替换指定字符 参数有 旧字符,新字符,替换次数
    # isdigit 判断是否是数字 isalpha 判断是否是字母 isalnum 判断是否是数字和字母的组合 返回的都是bool
    # startswith 判断是否是以。。。开头 endswith 判断是否是以。。。结尾
    # title 首字母大写
    # center 居中,可以自定义填充物
    # strip 删除指定的特殊字符 lstrip 左删除 rstrip 右删除
    # split 指定以什么字符分割字符串为列表
    # s = "123fsag123agfga45ga123ga123"
    # print(s.split("123"))
    # format 格式化输出
    # len 测量字符串中的元素的个数
    # count 计算指定字符的个数

    # 列表: 增 append insert extend
    # 删 remove pop clear del
    # 改 li[索引] = “被修改的内容”
    # 查 for 循环
    # range 下面生成0-8的数字
    # for i in range(0, 9):
    # print(i)

    # 元祖 不可修改子元素
    # count 计算元素的个数,len()测量长度 sort 排序默认升序 降序 sort(reverse = True)
    # reverse 翻转
    # join: list ——》 str

    
    
    1 # join: list ——》 str
    2 # li = ["1321", "454"]
    3 # a = "".join(li)
    4 # print(a)
    
    
    

    # 重点
    # 数据类型划分: 可变数据类型, 不可变数据类型
    # 不可变数据类型:元祖 bool int str 也称为可哈希
    # 可变数据类型:list,dict set 不可哈希
    # dict key 必须是不可变数据类型 可哈希
    # value:任意的数据类型
    # dict 的优点: 二分查找去查询 存储大量的关系型数据
    # 特点: (无序)

     1 # dic = {
     2 # key为字符串    'name':['大猛','小孟'],
     3 #     'py9':[{'num':71,'avg_age':18,},
     4 #            {'num': 71, 'avg_age': 18, },
     5 #            {'num': 71, 'avg_age': 18, },
     6 #            ],
     7 # key为bool    True:1,
     8 # key为元祖    (1,2,3):'wuyiyi',
     9 # key为整型    2:'二哥',
    10 # }

     # 编码问题

    # py3:
    # str 在内存中是用unicode编码。
    # bytes类型
    # 对于英文
    # str: 表现形式: s = 'alex'
    # 编码方式: 010101010
    # bytes: 表现形式 s = b'alex'
    # 编码方式 000101010 utf-8 gbk。。。。
    # 对于中文:
    # str: 表现形式: s = '中国'
    # 编码方式: 010101010 unicode
    # bytes: 表现形式: s = b'xe91e91e01e21e31e32'
    # 编码方式: 000101010 utf-8 gbk。。。。

     

     1 # dict:dic = {"name": "alex"}
     2 # 增: dic['age'] = 16 存在就覆盖
     3 # dic.setdefault()没有就增加 有就不变
     4 
     5 # 删除:pop() 按照keys删除 有返回值,返回key对应的值  没有对应的key就会报错
     6 # dia = {'name':"gag"}
     7 # dia.pop('name')
     8 # print(dia)
     9 # clear 清空列表    del 可以单个删除,也可以直接删除整个字典   popitem  随机删除,返回的是元祖
    10 # 改 update  存在就覆盖,没存在就添加
    11 #
    12 # dic = {'name': "gag"}
    13 # # dic.keys()      # 打印key
    14 # # dic.values()    # 打印value
    15 # # dic.items()     # 打印key和value
    16 # #
    17 # # for k, v in dic.items():
    18 # #     print(k, v)
    19 # # # 将键的值取出
    20 # # v = dic.get('name', None)
    21 # # print(v)
    22 
    23 li= [11, 22, 33, 44, 55, 66, 77, 88, 99, 90]
    24 dic = {'k1': [], 'k2': []}
    25 for i in li:
    26     if i == 66:
    27         continue
    28     if int(i) > 66:
    29         dic['k1'].append(i)
    30     else:
    31         dic['k2'].append(i)
    32 print(dic)
    33 
    34 # 复习
    35 # = 赋值 == 比较值是否相等  is比较  比较的是内存地址  id()显示内存地址
    36 li1 = [1, 2, 3]
    37 li2 = li1
    38 print(li1 is li2, id(li1),id(li2))
    39 
    40 # 数字,字符串 具有小数据池
    41 # 数字的范围 -5 -- 256
    42 # 字符串:  1,不能有特殊字符
    43 #           2.s*20还是同一个地址,s*21以后就是两个地址
    44 i1 = 6
    45 i2 = 6
    46 print(id(i1),id(i2))
    47 # 编译器显示一样的地址  但是在终端显示的是不一样的
    48 i1 = 300
    49 i2 = 300
    50 print(id(i1), id(i2))
    51 
    52 # 剩下的 list dict tuple set
    53 # 地址不一样
    54 l1 = [1,]
    55 l2 = [1,]
    56 print(l1 is l2)
    57 
    58 #### 重要  理解
    59 # s = 'alex'
    60 # s1 = b'alex'
    61 # print(s,type(s))
    62 # print(s1,type(s1))
    63 
    64 # s = '中国'
    65 # print(s,type(s))
    66 # s1 = b'中国'
    67 # print(s1,type(s1))
    68 
    69 s1 = 'alex'
    70 # encode 编码,如何将str --> bytes, ()
    71 s11 = s1.encode('utf-8')
    72 s11 = s1.encode('gbk')
    73 # 打印的都是b'alex'
    74 print(s11)
    75 
    76 s2 = '中国'
    77 s22 = s2.encode('utf-8')
    78 # show b'xe4xb8xadxe5x9bxbd' 6 个16进制  因为utf-8一个中文3个字节
    79 print(s22)
    80 
    81 s22 = s2.encode('gbk')
    82 # show b'xd6xd0xb9xfa' 4 个16进制  因为gbk一个中文2个字节
    83 print(s22)
    84 
    85 # utf-8             A:00100000 8位  一个字节
    86 #                   中: 00000001 00000010 00000110  24位  三个字节
    87 
    88 
    89 # gbk               A:  00000110  8位 一个字节
    90 #                   B: 00000010 00000110 16位 两个字节
    91 
    92 # 各个编码之间的二级制,是不可以互相识别的,会产生乱码
    93 # 文件的存储,传输,不能是unicode  (只能是utf-8 utf-16 gbk,gb2312,asciid等)

     

     

     
     
     
  • 相关阅读:
    拓扑排序笔记
    Codeforces Round #683 (Div. 2, by Meet IT)(A->C)(构造,思维,贪心)
    Acwing 846. 树的重心(DFS枚举删除每一个点)
    Acwing 125. 耍杂技的牛(贪心)(从局部到全局)
    Acwing 802. 区间和(下标离散化+vector+二分)
    Acwing 799. 最长连续不重复子序列(双指针)
    Acwing 139. 回文子串的最大长度(前缀+后缀处理+哈希+二分)
    Linux shell 变量$#,$@,$0....的含义
    一双不锈钢筷子 的测试用例?
    OSI模型 TCP/IP模型 再整理
  • 原文地址:https://www.cnblogs.com/Rainm/p/9589995.html
Copyright © 2011-2022 走看看