一、实现思路
第一层循环:确定百位数字,为防止重复,将所使用的数字从列表中取出。十位和个位从剩余列表中取值。
第二层循环:确定十位数字,为防止重复,将所使用的数字从列表中取出。个位从剩余列表中取值。
第三层循环:循环剩余列表,确定个位数字。
二、实现代码
# 第一种实现方法
tar = [1, 2, 3, 4]
count = 0 # 结果计数
for i in range(len(tar)): #最外层循环,确定百位数字
t1 = tar.copy() # 操作临时变量,防止改变原始tar的值,影响下次循环
x = str(t1.pop(i)) # 取出百位数字
for j in range(len(t1)): # 循环剩余列表,确定十位和个位
t2 = t1.copy() # 操作临时变量,防止改变t1的值,影响下次循环
y = str(t2.pop(j)) # 取出十位数字
for k in range(len(t2)): # 循环剩余列表,确定个位
print(x + y + str(t2[k]), end=' ') #将百位十位和个位拼接,得到一个结果
count += 1 #结果计数+1
print('') # 百位相同的结果显示为一行,百位数字改变的时候换行
print('最终结果为:%s个' % count)
# 第二种实现方法
tar = [1, 2, 3, 4]
count = 0 # 结果计数
for i in range(len(tar)):
x = str(tar.pop(i)) # 取出百位数字
for j in range(len(tar)):
y = str(tar.pop(j)) # 取出十位数字
for k in range(len(tar)):
print(x + y + str(tar[k]), end=' ') #将百位十位和个位拼接,得到一个结果
count += 1 #结果计数+1
tar.insert(j, int(y)) # 将拿出的十位数字放回原始列表,防止影响下次循环
tar.insert(i, int(x)) # 将拿出的百位数字放回原始列表,防止影响下次循环
print('') # 百位相同的结果显示为一行,百位数字改变的时候换行
print('最终结果为:%s个' % count)
三、运行结果
四、实现方式分析
0.上面的实现方法,每次循环均能得到一个有效结果,循环次数为4*3*2 = 24次
1.3层循环遍历数组,条件判断去重,得到最终结果
循环次数:4*4*4 = 64次
count = 0
for x in range(1, 5):
for y in range(1, 5):
for z in range(1, 5):
if (x != y) and (x !=z ) and (y != z):
print("%d%d%d" % (x, y, z), end=' ')
count += 1
print('')
print('最终结果为:%s个' % count)
2.3层循环遍历数组,利用Set集合去重,得到最终结果
循环次数:4*4*4 = 64次
tar = ['1', '2', '3', '4']
count = 0
for i in tar:
for j in tar:
for k in tar:
if len(set(i + j + k)) == 3:
print("%s%s%s" % (i, j, k), end=' ')
count += 1
print('')
print('最终结果为:%s个' % count)
版权声明:本文为u013250071原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。