当前位置:网站首页>实例001:数字组合 有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
实例001:数字组合 有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
2022-07-05 08:16:00 【懒笑翻】
# 实例001:数字组合 # 有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
环境:Pycharm2022 + Anaconda3
先用数学排列组合分析再用Python实现 并进行方法总结
目录
用数学排列组合分析
首先我想到的是排列数组合数,由于题目要求是无重复数字,因此为排列数。排列的定义:从n个不同元素中,任取m(m≤n,m与n均为自然数,下同)个不同的元素按照一定的顺序排成一列,叫做从n个不同元素中取出m个元素的一个排列;从n个不同元素中取出m(m≤n)个元素的所有排列的个数,叫做从n个不同元素中取出m个元素的排列数。
我们可以得出此题的排列数是 4! / (4-3)! = 4! = 24 (个)
Python实现
方法一:我们可以循环遍历3个数字,由于要求不重复数字,因此在输出时做出条件判断,只输出百位数十位数个位数都不相同的数。
arrange = 0 # 定义排列数
nums = range(1, 5)
# 方法一
for i in nums: # 百位数
for j in nums: # 十位数
for k in nums: # 个位数
if ((i != j) and (j != k) and (k != i)): # 只输出无重复数字
print(i, j, k)
arrange += 1
print(arrange)运行结果如下:
1 2 3
1 2 4
1 3 2
1 3 4
1 4 2
1 4 3
2 1 3
2 1 4
2 3 1
2 3 4
2 4 1
2 4 3
3 1 2
3 1 4
3 2 1
3 2 4
3 4 1
3 4 2
4 1 2
4 1 3
4 2 1
4 2 3
4 3 1
4 3 2
24 个
Process finished with exit code 0方法二:可以直接调用itertools的permutations()类,# itertools,是python的一个内置模块,功能强大,主要用于高效循环创建迭代器。注意一点,他返回的不是list,而是iterator
import itertools # itertools,是python的一个内置模块,功能强大,主要用于高效循环创建迭代器。注意一点,他返回的不是list,而是iterator
arrange = 0 # 定义排列数
nums = range(1, 5)
for i in itertools.permutations(nums, 3): # (迭代的元素,迭代序列长度)
print(i)
arrange += 1
print(arrange)运行结果如下:
(1, 2, 3)
(1, 2, 4)
(1, 3, 2)
(1, 3, 4)
(1, 4, 2)
(1, 4, 3)
(2, 1, 3)
(2, 1, 4)
(2, 3, 1)
(2, 3, 4)
(2, 4, 1)
(2, 4, 3)
(3, 1, 2)
(3, 1, 4)
(3, 2, 1)
(3, 2, 4)
(3, 4, 1)
(3, 4, 2)
(4, 1, 2)
(4, 1, 3)
(4, 2, 1)
(4, 2, 3)
(4, 3, 1)
(4, 3, 2)
24方法二种用到的 itertools.permutations 类,该类内容如下:
class permutations(object):
"""
Return successive r-length permutations of elements in the iterable.
permutations(range(3), 2) --> (0,1), (0,2), (1,0), (1,2), (2,0), (2,1)
"""
def __getattribute__(self, *args, **kwargs): # real signature unknown
""" Return getattr(self, name). """
pass
def __init__(self, range, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__
pass
def __iter__(self, *args, **kwargs): # real signature unknown
""" Implement iter(self). """
pass
@staticmethod # known case of __new__
def __new__(*args, **kwargs): # real signature unknown
""" Create and return a new object. See help(type) for accurate signature. """
pass
def __next__(self, *args, **kwargs): # real signature unknown
""" Implement next(self). """
pass
def __reduce__(self, *args, **kwargs): # real signature unknown
""" Return state information for pickling. """
pass
def __setstate__(self, *args, **kwargs): # real signature unknown
""" Set state information for unpickling. """
pass
def __sizeof__(self, *args, **kwargs): # real signature unknown
""" Returns size in memory, in bytes. """
passpermutations类创建一个迭代器,返回iterable中所有长度为r的项目序列,如果省略了r,那么序列的长度与iterable中的项目数量相同,即会返回一个全排列的结果。
边栏推荐
- [trio basic tutorial 17 from getting started to mastering] set up and connect the trio motion controller and input the activation code
- DokuWiki deployment notes
- Relationship between line voltage and phase voltage, line current and phase current
- Sql Server的存儲過程詳解
- Network communication model -- Network OSI tcp/ip layering
- Matlab2018b problem solving when installing embedded coder support package for stmicroelectronic
- Bootloader implementation of PIC MCU
- Slist of linked list
- [trio basic from introduction to mastery tutorial 20] trio calculates the arc center and radius through three points of spatial arc
- 1-stm32 operation environment construction
猜你喜欢

Compilation warning solution sorting in Quartus II

C # joint configuration with Halcon

Management and use of DokuWiki (supplementary)
![C WinForm [get file path -- traverse folder pictures] - practical exercise 6](/img/8b/1e470de4e4ecd4fd1bb8e5cf23f466.jpg)
C WinForm [get file path -- traverse folder pictures] - practical exercise 6

Negative pressure generation of buck-boost circuit

STM32 --- serial port communication

【论文阅读】2022年最新迁移学习综述笔注(Transferability in Deep Learning: A Survey)

Working principle and type selection of common mode inductor

DCDC circuit - function of bootstrap capacitor
![C WinForm [view status bar -- statusstrip] - Practice 2](/img/40/63065e6c4dc4e9fcb3e898981f518a.jpg)
C WinForm [view status bar -- statusstrip] - Practice 2
随机推荐
Hardware 1 -- relationship between gain and magnification
Programming knowledge -- basis of C language
[cloud native | learn kubernetes from scratch] III. kubernetes cluster management tool kubectl
Arduino uses nrf24l01+ communication
Matlab2018b problem solving when installing embedded coder support package for stmicroelectronic
99 multiplication table (C language)
List of linked lists
FIO测试硬盘性能参数和实例详细总结(附源码)
C#,数值计算(Numerical Recipes in C#),线性代数方程的求解,LU分解(LU Decomposition)源程序
Halcon's practice based on shape template matching [1]
The firmware of the connected j-link does not support the following memory access
Stablq of linked list
Talk about the circuit use of TVs tube
After installing the new version of keil5 or upgrading the JLINK firmware, you will always be prompted about the firmware update
Measurement fitting based on Halcon learning [II] meaure_ pin. Hdev routine
Various types of questions judged by prime numbers within 100 (C language)
Circleq of linked list
【论文阅读】2022年最新迁移学习综述笔注(Transferability in Deep Learning: A Survey)
Void* C is a carrier for realizing polymorphism
【云原生 | 从零开始学Kubernetes】三、Kubernetes集群管理工具kubectl