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等)

 

 

 
 
 
原文地址:https://www.cnblogs.com/Rainm/p/9589995.html