要求把all_nums平均分成两份,统计前半部分数据中有哪些数字出现在后半部分中,并输出,数字不能重复。
也就是说:假如all_nums = [1,3,3,1,2,3],那最终的输出结果为[1,3],而不是[1,3,3]
# eCoding=utf-8import randomimport time# 生成一个长度为100000的随机Listdef gen_List(): return [random.randint(0, 6000) for i in range(100000)]# 要求这个函数对all_nums进行统计,统计所有不重复数据,并输出。也就是相当于sql的distinct。def static(all_nums): news_allnums = [] for i in all_nums: if i not in news_allnums: news_allnums.append(i) #追加函数 return news_allnums#要求把all_nums平均分成两份,统计前半部分数据中有哪些数字出现在后半部分中,并输出,数字不能重复。# 也就是说假如all_nums = [1,3,3,1,2,3],那最终的输出结果为[1,3],而不是[1,3,3]def compare(all_nums): l = len(all_nums) all = all_nums[l // 2: -1] all=static(all) nums = all_nums[0: l // 2] nums = static(nums) news_allnums = [] for i in all: if i in nums: news_allnums.append(i) #追加函数 return news_allnumsif __name__ == '__main__': all_nums = gen_List() print(all_nums) timestamp = time.time() result = static(all_nums) print(time.time() - timestamp) nums = compare(all_nums) print(time.time() - timestamp)
字典实现:# eCoding=utf-8import randomimport time# 生成一个长度为100000的随机Listdef gen_List(): return [random.randint(0, 60000) for i in range(100000)]# 要求这个函数对all_nums进行统计,统计所有不重复数据,并输出。也就是相当于sql的distinct。def static(nums): return List(set(nums))# 要求把all_nums平均分成两份,统计前半部分数据中有哪些数字出现在后半部分中,并输出,数字不能重复。# 也就是说假如all_nums = [1,3,3,1,2,3],那最终的输出结果为[1,3],而不是[1,3,3]# 大家自己用set实现一下def compare(nums): l = len(nums) A = nums[l // 2: -1] B = nums[0: l // 2] C = set(A) & set(B) #集合运算,集合中不含重复元素 return C# 使用字典统计all_nums中每个数字分别出现过多少次def count(nums): dic = {} for i in nums: if i not in dic: dic[i] = 1 else: dic[i] = dic[i] + 1 return dic# 利用字典进行处理# 使用字典统计all_nums前半部分的每个数字分别在后半部分中出现过多少次'''def countpare(nums): l = len(nums) A = nums[l // 2: -1] B = nums[0: l // 2] dic={} for i in B: if i in A: if i not in dic: dic[i] = 1 else: dic[i] = dic[i] + 1 else: dic[i] = 0 return dic'''def countpare(nums): l = len(nums) A = nums[l // 2: -1] B = nums[0: l // 2] dicB = {} for i in B: if i not in dicB: dicB[i] = 0 #字典初始化 for i in A: if i in dicB: dicB[i] += 1 return dicB#字典采用哈希查询,比List快很多if __name__ == '__main__': all_nums = gen_List() timestamp = time.time() #获取时间戳 result = static(all_nums) print(time.time() - timestamp) nums = compare(all_nums) print(time.time() - timestamp)#到现在用了多久秒 # COUNT=count(all_nums) # print(COUNT) COUNTPARE = countpare(all_nums) print(COUNTPARE) print(time.time() - timestamp)
总结 以上是内存溢出为你收集整理的PYTHON list 与 字典练习全部内容,希望文章能够帮你解决PYTHON list 与 字典练习所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)