Python数据结构

    技术2022-07-11  101

    #如果 a+b+c=1000,且 a^2+b^2=c^2(a,b,c 为自然数),如何求出所有a、b、c可能的组合? #a #b #c import time start = time.time() for a in range(0,1001): for b in range(0,1001): for c in range(0,1001): if a+b+c==1000 and a**2+b**2==c**2: print('a,b,c:%d,%d,%d' % (a,b,c)) end = time.time() print("times:%d" % (end-start)) 结果 a,b,c:0,500,500 a,b,c:200,375,425 a,b,c:375,200,425 a,b,c:500,0,500 times:96 import time start = time.time() for a in range(0,1001): for b in range(0,1001): c = 1000 - a - b if a**2+b**2==c**2: print('a,b,c:%d,%d,%d' % (a,b,c)) end = time.time() print("times:%d" % (end-start)) 结果 a,b,c:0,500,500 a,b,c:200,375,425 a,b,c:375,200,425 a,b,c:500,0,500 times:0 #coding:utf-8 from timeit import Timer # li1 = [1,2] # li2 = [7,4] # li = li1+li2 # li = [i for in range(10000)] # li = list(range(10000)) # li = [] def test1(): li = [] for i in range(10000): li.append(i) def test2(): li = [] for i in range(10000): li += [i] def test3(): li = [i for i in range(10000)] def test4(): li = list(range(10000)) def test5(): li = [] for i in range(10000): li.extend([i]) timer1 = Timer("test1()","from __main__ import test1") print("append:",timer1.timeit(1000)) timer2 = Timer("test2()","from __main__ import test2") print("+:",timer2.timeit(1000)) timer3 = Timer("test3()","from __main__ import test3") print("[i for i in range]:",timer3.timeit(1000)) timer4 = Timer("test4()","from __main__ import test4") print("list(range()):",timer4.timeit(1000)) timer5 = Timer("test5()","from __main__ import test5") print("extend:",timer5.timeit(1000)) 结果 append: 0.489974526 +: 0.5904193860000001 [i for i in range]: 0.262681304 list(range()): 0.16921364000000017 extend: 0.7292731269999999
    Processed: 0.013, SQL: 9