ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# https://www.bilibili.com/video/BV1ak4y127yW?p=4&spm_id_from=pageDriver ## 列表的区别 ``` # 有什么区别 a = [1, 2, 3] b = [(1), (2), (3)] c = [(1,), (2,), (3,)] print(a) print(b) print(c) ``` 输出: ``` [1, 2, 3] [1, 2, 3] [(1,), (2,), (3,)] ``` 都是列表,(1+2) * 3,python的()默认优先,要表示元组tuple要在元素后加逗号 ## 如何用一行代码生成[1,4,9,16,25,36,49,64,81,100] ``` lst = [i**2 for i in range(1, 11)] print(lst) ``` ## 有两个字符串列表a和b,每个字符串时有逗号分隔的一些字符 ``` """ a = [ 'a, 1', 'b, 3, 22', 'c, 3, 4' ] b = [ 'a, 2', 'b, 1', 'd, 2' ] 按每个字符串的第一个值,合并a和b到c c = [ 'a, 1, 2', 'b, 3, 22, 1', 'c, 3, 4', 'd, 2' ] """ a = [ 'a, 1', 'b, 3, 22', 'c, 3, 4' ] b = [ 'a, 2', 'b, 1', 'd, 2' ] for b_i in range(len(b)): for a_i in range(len(a)): if a[a_i][0] == b[b_i][0]: a[a_i] += b[b_i][1:] break else: a.append(b[b_i]) print(a) ``` ## 打印列表 ``` """ 有一个多层嵌套的列表A = [1, 2, [3, 4, ["434", ...]]] 请写一段代码遍历A中的每一个元素并打印出来 """ A = [1, 2, [3, 4, ["434", ...]]] for item in A: if type(item) == list: A.extend(item) else: print(item) ``` ## 将列表内的元素,根据位数合并成字典 ``` """ 将列表内的元素,根据位数合并成字典 例: lst = [1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536,4294967296] # 输出: { 1:[1,2,4,8], 2:[16,32,64], 3:[128,256,512], 4:[1024,2048,4096,8192], 5:[16384,32768,65536], 6:[4294967296] } """ lst = [1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536,4294967296] dic = {} for item in lst: it = str(item) if len(it) < 6: dic.setdefault(len(it), []).append(item) else: dic.setdefault(6, []).append(item) print(dic) ``` ## 把二维数组转换成一维数组 ``` """ 请尽量用简洁的方法把二维数组转换成一维数组 例如: 转换前 lst = [[1,2,3], [4,5,6], [7,8,9]] 转换后 lst = [1,2,3,4,5,6,7,8,9] """ lst = [[1,2,3], [4,5,6], [7,8,9]] lst2 = sum(lst, []) print(lst2) ``` ## 按规则排序 ``` """ 将列表按下列规则排序,补全代码 1. 正数在前,负数在后 2. 正数从小到大 1 2 3 4 5 6 7 8 9 3. 负数从大到小 -1 -2 -3 -4 -5 -6 -7 -8 -9 例如: 排序前:[7, -8, 5, 4, 0, -2, -5] 排序后:[0, 4, 5, 7, -2, -5, -8] 请补全代码: sorted(lst, key=lambda x:_____) """ lst = [7, -8, 5, 4, 0, -2, -5] res = sorted(lst, key=lambda x: (x < 0, abs(x))) print(res) ``` ## 深浅拷贝 ``` """ a = [1, 2, 3, [4, 5], 6] b = a c = copy.copy(a) d = copy.deepcopy(a) b.append(10) c[3].append(11) d[3].append(12) 请问a, b, c, d的值为:???? """ import copy # a = b = [1, 2, 3, [4, 5, 11], 6, 10] # c = [1, 2, 3, [4, 5, 11], 6] # d = [1, 2, 3, [4, 5, 12], 6] a = [1, 2, 3, [4, 5], 6] b = a # 没有拷贝 c = copy.copy(a) # 浅拷贝,[4, 5]共享 d = copy.deepcopy(a) # # 深拷贝,完全是另一份数据 b.append(10) c[3].append(11) d[3].append(12) ``` ## 交集反交集 ``` """ 给定两个list, A, B 请用python找出A, B中相同的元素,A, B中不同的元素 """ A = [1,2,3] B = [2,3,4] a = set(A) b = set(B) print(a & b) # 交集 print(a ^ b) # 烦交集 print(a | b) # 合集 print(a - b) # 差集 ``` 输出: ``` {2, 3} {1, 4} {1, 2, 3, 4} {1} ```