Python100道经典练习题
第一题:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
分析:可以用for的多重循环。可以在循环里面找出不符合要求的数。也可以在循环开始前删掉已经用过的数。
# -*- coding: utf-8 -*-
import time
nums = [1,2,3,4,5,6,7]
#方法一
def forall(nums):
Tsum = 0
for i in nums:
for j in nums:
if j != i:
for k in nums:
if k != i and k != j:
Tsum += 1
# print(i,j,k)
# print(Tsum)
#方法二
def forpop(list):
Tsum = 0
for i in nums:
num_1 = nums.copy() #需要用深拷贝,否则会出错
num_1.remove(i)
for j in num_1:
num_2 = num_1.copy()
num_2.remove(j)
for k in num_2:
Tsum += 1
# print(i,j,k)
# print(Tsum)
'''测试两种方法的效果'''
start = time.time()
for n in range(100000):
forall(nums)
end = time.time()
print('全循环耗时:',end - start)
start = time.time()
for n in range(100000):
forpop(nums)
end = time.time()
print('部分循环耗时:',end - start)
结果分析:
1.如果输入的num=[1,2,3,4],第一种方法耗时约1.20s,第二种耗时约1.37s。
2.如果输入改成num=[1,2,3,4,5,6,7],第一种方法耗约8.10s,第二种耗时约7.23s。