功能需求
有四个数字 1,2,3,4,能够组成多少个互不相同并且无重复的三位数字?各是多少?
程序分析
使用for循环遍历所有可能,将重复的删去,设定一个计数变量total,每完成一次符合要求的组合,
total自加1.
程序实现(一)
使用for循环
#total初始值为0
total = 0
#最外层循环从1开始遍历,直到4
for i in range(1,5):
for j in range(1,5):
for k in range(1,5):
#如果i,j,k互不相等,就打印出来
if (i != j) and (j != k) and (k != i):
print(i,j,k)
total+=1
print(total)
程序实现(二)
在python的itertools模块中,permutations()函数用于生成一个序列的所有可能排列。它接收两个参数,permutations(a,b),a是一个可迭代对象,比如列表、元组等;整数b代表要生成排列的长度。返回值是一个包含所有可能排列的迭代器。
举例:
import itertools
# 定义一个列表
data = [1,2,3,4]
# 生成长度为3的所有排列
result = list(itertools.permutations(data,3))
# 输出结果
print(result)
import itertools
a = [1,2,3,4]
sum2 = 0
for i in itertools.permutations(a, 3):
print(i)
sum2 += 1
print(sum2)
注意事项
permutations()函数生成的是元组,如果要将其转换成列表或者是其他可迭代对象,可以使用list()函数进行转换;如果输入的可迭代对象为空,或者指定的排列长度
大于可迭代对象的S长度,permutations()将会返回一个空的迭代器。
permutations()函数生成的是元组,如果要将其转换成列表或者是其他可迭代对象,可以使用list()函数进行转换;如果输入的可迭代对象为空,或者指定的排列长度大于可迭代对象的长度,permutations()将会返回一个空的迭代器。