1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3
4 # 数字int 延伸
5 a1 = 123
6 a2 = 123
7 print(a1.bit_length())
8 # 查看内存地址: id(变量名)
9 print(id(a1))
10 print(id(a2))
11 # 32位系统 int的范围为 -2**31 到 2**31-1
12 # 64位系统 int的范围为 -2**63 到 2**63-1
13 # -5 到 257 内存地址一致
14
15 # 字符串str
16 # 一个汉字 UTF-8占3个字节,GBK占2个字节
17 s1 = "alex"
18 s2 = str("alex")
19 print(s1[:])
20
21 # 编码补充
22 # bytes是类似int,str的一种字节类型
23 # bytes 可以将字符串转换为字节
24 # bin()可以将字节显示为二进制
25 # 1 3.5 for循环的时候,循环的每一个元素是"字符"
26 # 2 字符 => 字节 bytes_list = bytes(i,encoding='utf-8')
27 # 3 print(bytes_list) # 默认每个字节是用十六进制表示
28 # 4 for b in bytes_list:
29 # 4 print(b) #默认每个字节是用十进制表示
30 # 5 十进制转换为二进制 bin(十进制的数字)
31
32 name = "郭磊"
33 for i in name:
34 print(i)
35 bytes_list = (bytes(i, encoding='utf-8'))
36 print(bytes_list)
37 for b in bytes_list:
38 print(b, type(b))
39 print(b, bin(b))
40 print(b, hex(b))
41 print(b, hex(int(bin(b), 2)))
42 """
43 a = "李路"
44 # 将字符串转换为字节
45 b1 = bytes(a,encoding="utf-8")
46 print(b1)
47 b2 = bytes(a,encoding="gbk")
48 print(b2)
49 # 将字节转换为字符串
50 b3 = str(b1,encoding="utf-8")
51 print(b3)
52 b4 = str(b2,encoding="gbk")
53 print(b4)
54 """
55
56 # 列表list
57 # list = [], list = list(),list = list([11,22])
58 s1 = "李路"
59 # for 字符 => 可迭代
60 l1 = list(s1) # 将循环每个元素,当作列表的元素
61 print(l1)
62 t2 = ("alex", "oldboy", "sven")
63 l2 = list(t2)
64 print(l2)
65 li = [11, 22, 33]
66 # 追加
67 li.append("22")
68 # 清除
69 li.clear()
70 # 扩展自己,用另外一个可迭代的对象,扩充到自己的内部
71 str, list, dict, tuple
72 s = "李路"
73 li.extend(s)
74 print(li)
75 # 自己内部元素反转
76 li.reverse()
77 # 向指定位置插入
78 li.insert()
79
80 # 字典dict
81 dic = {"k1": "alex", "k2": "sven"}
82 l3 = list(dic.values())
83 print(l3)
84 l3 = list(dic.items())
85 print(l3)
86 dic = {}
87 dic.update({"k1": "v1"})
88 dic["k2"] = "v2"
89 print(dic)
90 a = dict(k1=123, k2=456)
91 print(a)
92 li = [11, 22, 33]
93 new_dict = dict(enumerate(li, 0))
94 print(new_dict)
95 # 方法无@staticmethod,使用对象.方法调用
96 a.keys()
97 # 方法有@staticmethod,使用类.方法调用
98 n1 = dict.fromkeys(["k1", "k2", "k3"], [])
99 n1["k1"].append("x")
100 print(n1)
101 n2 = {'k1': [], 'k2': [], 'k3': []}
102 n2["k1"].append("x")
103 print(n2)
104
105 # 元祖 tuple
106 # 元祖的元素不可修改,元素的元素可以被修改
107 t = (11, 22, ["alex", {"k1": "v1"}])
108 t[2].append("sven")
109 t[2][1]["k2"] = "v2"
110 t[2][1].update({"k3": "v3"})
111 print(t)
112
113 # set集合 => 不允许重复的集合,类似不允许重复的list
114 # 创建
115 s = set()
116 s = {11, 22, 33, 44}
117 # 转换
118 l = [11, 22, 33, 44]
119 s = set(l)
120 print(s)
121 # 方法
122 se = set()
123 se.add(44)
124 print(se)
125 se.remove(44)
126 print(se)
127 se = {11, 22, 33}
128 be = {22, 44}
129 # 找se中存在,be中不存在的元素,并返回新的set
130 print(se.difference(be))
131 # 找se中存在,be中不存在的元素,并更新se
132 se.difference_update(be)
133 print(se)
134 # 删除不报错
135 se.discard(44)
136 # 取交集并返回ret
137 ret = se.intersection(be)
138 print(se, ret)
139 # 取交集并更新se
140 se.intersection_update(be)
141 print(se)
142 # 判断是否有交集,有返回False,没有返回True
143 ret = se.isdisjoint(be)
144 print(ret)
145 # 判断是否是子序列,父子关系
146 ret = se.issubset(be)
147 # 判断是否是父序列,父子关系
148 ret = se.issuperset(be)
149 print(ret)
150 ret = se.pop()
151 print(ret)
152 # 取对称交集,返回set
153 ret = se.symmetric_difference(be)
154 print(ret)
155 # 取对称交集,更新set
156 se.symmetric_difference_update(be)
157 print(se)
158 # 取并集,合并2个set
159 ret = se.union(be)
160 print(ret)
161 # 更新set
162 se.update([44, 55, 66])
163 print(se)