1 # 计算三个人的年龄的平均值 2 age1 = 20 3 age2 = 50 4 age3 = 55 5 print((age1 + age2 + age3) / 3) 6 7 # 字符串:一个有序的、不可变的集合 8 # 列表:本质:一个有序的、可变的集合 9 10 # 数组 -- 列表 11 12 # 一、创建列表 13 # 语法格式:列表变量名称 = [元素1, 元素2, ......元素n] 14 # 元素之间用 ,(逗号)隔开 15 # 列表中的元素可以存在重复的数据 16 17 # 1、创建一个空列表 18 list1 = [] 19 print(list1) 20 print(type(list1)) # list 21 # 2、创建一个有5个元素的列表 22 list2 = [1,2,3,4,6] 23 print(list2) 24 print(type(list2)) # list 25 26 # 3、列表中的元素类型可以为任意类型的数据 27 list3 = ["a", 'b', 1, 1.2, True, None] 28 print(list3) 29 30 # 4、列表的中的元素可以是列表类型数据 31 list4 = [1, 2, 3, [66,77,88], [99,77,44], "a"] 32 print(list4) 33 34 35 # 二、列表元素的访问 36 list5 = [1,2,3,4,5,6,7,"a"] # 8个元素 37 # 1、取值:格式:列表名称[下标] 38 # 下标从0开始 39 # 下标不能越界,越界报错 最后一个元素的下标值为:列表长度-1 (len(list) -1) 40 print(list5[3]) 41 # print(list5[16]) # IndexError:list index out of range 下标越界 42 43 # 2、取值:从右向左取 44 # 下标为 -1 时获取最后一个元素 45 print(list5[-1]) 46 # print(list5[-9]) # IndexError: list index out of range 47 48 # 3、替换元素 49 # 语法格式: 列表名称[index] = 新值 50 list5[1] = 200 51 print(list5) 52 53 54 # 三、列表的操作 55 # 1、列表组合 + 56 list6 = [1,2,3] 57 list7 = [1,2,5,6] 58 list8 = list6 + list7 59 print(list8) 60 61 # 2、列表的重复 * 62 list9 = [1] 63 print(list9 * 10) 64 print(list9) 65 66 # 3、判断某个元素是否在列表中 67 # in not in 68 list10 = [111, 222, 333] 69 print(111 in list10) # True 70 print(555 in list10) # False 71 72 73 # 4、列表的截取 74 # 语法格式:列表名称[[起始下标]:[结束下标] [:[递增基数]]] 75 list11 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 76 # 4.1、从0开始截取,截取到数字6 77 list12 = list11[:7] 78 # 4.2、从数字3开始截取,截取末尾 79 list13 = list11[3:] 80 # 4.3、截取所有 81 list14 = list11[:] 82 # 4.4、从数字3开始截取,截取到数字6 83 list15 = list11[3:7] 84 # 4.5、列表逆序 85 list16 = list11[::-1] 86 # 4.6、隔一取一 87 list17 = list11[::2] 88 print(list12, list13, list14, list15, list16, list17) 89 90 print(list11) 91 print(list14) 92 print(id(list11)) 93 print(id(list14)) 94 str1 = "abc" 95 str2 = str1[:] 96 print(id(str1)) 97 print(id(str2)) 98 99 print(id(list11)) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 100 list11[0] = "a" 101 print(id(list11)) 102 103 104 # 四、数据的操作 -- 增改查删 105 # 1、增 -- 增加数据 106 list18 = [1,2,3,4] 107 print(list18) 108 # 1.1、list.append(obj) 在列表后面添加一个新的元素,obj可 109 # 以是任意类型的数据 110 list18.append(5) 111 print(list18) 112 list18.append("abc") # [1,2,3,4,5,"abc"] 113 print(list18) 114 list18.append(True) # [1,2,3,4,5,"abc", True] 115 print(list18) 116 list18.append([2,3,4]) # [1,2,3,4,5,"abc", True, [2,3,4]] 117 print(list18) 118 119 # 1.2、list.extend(iter) 在列表后面添加新的元素,将iter中的元素分 120 # 开添加。 注:iter必须是集合类型的元素 121 print("-----------------------------------------") 122 list19 = [1,2,3] 123 print(list19) 124 list19.extend("abcd") # [1, 2, 3, 'a', 'b', 'c', 'd'] 125 print(list19) 126 list19.extend([100,200]) 127 print(list19) # [1, 2, 3, 'a', 'b', 'c', 'd', 100, 200] 128 # list19.extend(100) # TypeError: 'int' object is not iterable 129 # print(list19) 130 131 # 1.3、list.insert(index, obj) : 在指定的index位置上添加新的obj元素 132 # 不会覆盖该位置原来的元素,原数据在index上的及之后的元素下标依 133 # 次向后顺移一位 134 list20 = [1,2,3,4] 135 list20.insert(2, 500) 136 print(list20) # [1, 2, 500, 3, 4] 137 list20.insert(3, "abc") 138 print(list20) # [1, 2, 500, "abc", 3, 4] 139 list20.insert(5, [100,200]) 140 print(list20) # [1, 2, 500, 'abc', 3, [100, 200], 4] 141 list20.insert(10, "def") 142 # 如果新增数据的下标越界,会在列表后面添加新的元素 143 print(list20) 144 145 # 2、改 -- 更改数据 更新数据 146 # 语法格式: 列表名称[index] = 新值 147 list5 = [1,2,3,4] 148 list5[1] = 200 149 print(list5) 150 151 # 3、删 -- 删除数据 152 # 3.1、list.pop([index]): 移除指定index位置的元素,当不指定index的值时, 153 # 默认删除最后一个元素 154 list1 = [0,1,20000,3,4,5,6,7] 155 list1.pop() 156 print(list1) 157 list1.pop(2) 158 print(list1) 159 160 # 3.2、list.clear() 清空列表中的元素 161 list2 = [1,2,3,4] 162 list2.clear() 163 print(list2) 164 165 # 3.3、list.remove(item) 移除列表中匹配到的第一个item这个元素 166 list3 = [1,2,3,4,5,3,4,5,3,4,5] 167 list3.remove(2) 168 print(list3) 169 list3.remove(3) 170 print(list3) 171 172 173 # 4、查 --- 查询元素 174 # 1、列表中是否存在某一个元素 in not in 175 # 2、列表中是否存在某一个元素 index 176 # list.index(obj [,start, end]) 如果存在,返回第一次匹配到的下标, 177 # 如果不存在,返回错误ValueError 178 list4 = [1,2,3,4,2,3,4] 179 print(list4.index(1)) 180 print(list4.index(2)) 181 # print(list4.index(7)) # ValueError: 7 is not in list 182 print(list4.index(2, 2, 5)) 183 184 185 # 五、列表其他操作 186 list5 = [2,3,4,1,5,6,9,7] 187 # 1、len(list) 获取列表长度 188 print(len(list5)) # 8 189 # 2、max(list) 返回列表中最大的元素 190 print(max(list5)) # 9 191 # 3、min(list) 返回列表中最小的元素 192 print(min(list5)) # 1 193 194 # 4、list.reverse() 列表反转 改变原来的列表 195 list6 = [1,2,3,4] 196 print(list6) 197 list6.reverse() 198 print(list6) 199 # list6[::-1] 返回一个新的列表,不会改变原来的列表 200 201 # 5、list.count(obj) 返回元素obj在列表中的个数 202 list7 = [1,2,3,3,3,3,3,3,5] 203 print(list7.count(3)) # 6 204 205 # 6、list.sort([reverse=]) 列表排序,默认正序 206 # reverse默认为False,正序;如果为True,倒序 207 list8 = [7,3,1,5,2,4,6] 208 # list8.sort() 209 list8.sort(reverse=True) 210 print(list8) 211 212 # 7、拷贝 213 # 7.1、浅拷贝 : 表面上增加了一个变量名称,但内存地址使用被拷贝的地址 214 print('---------------------------------') 215 list100 = [1,2,3,4,5] 216 listCopy = list100 217 print(list100) # [1,2,3,4,5] 218 print(listCopy) # [1,2,3,4,5] 219 print(id(listCopy)) 220 print(id(list100)) 221 list100[0] = 100 222 print(list100) # [100,2,3,4,5] 223 print(listCopy) # [100,2,3,4,5] 224 225 # 7.2、深拷贝 -- 返回一个新的列表,内存地址与原来的列表不一致 226 print('***************************************') 227 list200 = [1,2,3,4,5,6] 228 listNew = list200.copy() 229 print(list200) # [1,2,3,4,5,6] 230 print(listNew) # [1,2,3,4,5,6] 231 print(id(list200)) 232 print(id(listNew)) 233 234 list200[0] = 10000 235 listNew[2] = 222 236 print(list200) # [10000,2,3,4,5,6] 237 print(listNew) # [1,2,222,4,5,6] 238 239 print('********************************') 240 list1 = [1,2,[4,5,6]] 241 list2 = list1.copy() 242 print(id(list1)) 243 print(id(list2)) 244 245 print(id(list1[2])) 246 print(id(list2[2])) 247 print(list1) 248 print(list2) 249 250 list1[2][0] = 100 251 list1[0] = 200 252 print(list1) 253 print(list2) 254 255 # 拷贝的模块 256 import copy 257 a = [1,2,[5,6]] 258 b = copy.copy(a) 259 print('------------------------------') 260 print(id(a)) 261 print(id(b)) 262 263 print(id(a[2])) 264 print(id(b[2])) 265 266 # 真正的深拷贝 267 print("============================") 268 c = copy.deepcopy(a) 269 print(id(a)) 270 print(id(c)) 271 print(id(a[2])) 272 print(id(c[2])) 273 274 275 # 六、二维列表 276 list12 = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]] 277 print(list12) 278 print(list12[1]) # [4, 5, 6] 279 print(list12[1][1]) 280 281 282 # 七、遍历列表 283 list2 = [2,3,4] 284 # item : 元素 285 for item in list2: 286 print(item) 287 288 i = 0 289 while i < len(list2): 290 print(list2[i]) 291 i += 1 292 293 for i in range(len(list2)): 294 print(list2[i]) 295 296 # 将列表中重复的元素删除 297 list1 = [1,2,3,1,2,3,4,5,1,2,3] 298 # [1,2,3,4,5] 299 s1 = set(list1) 300 list2 = list(s1) 301 print(list2) 302 303 304 # 遍历二维 305 list12 = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]] 306 for item in list12: 307 print(item) 308 for j in item: 309 print(j) 310 311 for i in range(len(list12)): 312 print(list12[i]) 313 for j in range(len(list12[i])): 314 print(list12[i][j]) 315 316