题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
代码如下:
for x in range(1,5):
for y in range(1,5):
for z in range(1,5):
if (x!=y) and (y!=z) and (z!=x):
print("%d%d%d" % (x, y, z))
但是这样结果很难看,于是我对显示做了一点优化,
代码如下:
i = 0
for x in range(1,5):
for y in range(1,5):
for z in range(1,5):
if (x!=y) and (y!=z) and (z!=x):
i += 1
if i%4:
print("%d%d%d" % (x, y, z), end=" | ")
else:
print("%d%d%d" % (x, y, z))
结果如下:
123 | 124 | 132 | 134
142 | 143 | 213 | 214
231 | 234 | 241 | 243
312 | 314 | 321 | 324
341 | 342 | 412 | 413
421 | 423 | 431 | 432
这样是不是好看多了
我们再用Python标准库itertools来实现,这个库提供了很多生成循环器的工具,其中很重要的用途是生成集合中所有可能方式的元素排列或组合。
这里我们使用 permutations函数, 他只考虑顺序组合元素。
import itertools
items ="1234"
count = 0
for item in itertools.permutations(items, 3):
count += 1
if count%4:
print("".join(item), end=" | ")
else:
print("".join(item))