当前位置:网站首页>实例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. """
pass
permutations类创建一个迭代器,返回iterable中所有长度为r的项目序列,如果省略了r,那么序列的长度与iterable中的项目数量相同,即会返回一个全排列的结果。
边栏推荐
- Basic embedded concepts
- Factors affecting the quality of slip rings in production
- Google sitemap files for rails Projects - Google sitemap files for rails projects
- Shape template matching based on Halcon learning [viii] PM_ multiple_ models. Hdev routine
- Stm32--- systick timer
- Charge pump boost principle - this article will give you a simple understanding
- Imx6ull bare metal development learning 2- use C language to light LED indicator
- Imx6ull bare metal development learning 1-assembly lit LED
- Synchronization of QT multithreading
- After installing the new version of keil5 or upgrading the JLINK firmware, you will always be prompted about the firmware update
猜你喜欢
After installing the new version of keil5 or upgrading the JLINK firmware, you will always be prompted about the firmware update
Process communication mode between different hosts -- socket
The firmware of the connected j-link does not support the following memory access
Communication standard -- communication protocol
C language enhancement -- pointer
Factors affecting the quality of slip rings in production
Stm32--- systick timer
Some thoughts on extracting perspectives from ealfa and Ebeta
STM32 tutorial triple ADC interleaved sampling
[trio basic tutorial 17 from getting started to mastering] set up and connect the trio motion controller and input the activation code
随机推荐
PMSM dead time compensation
Tailq of linked list
Measurement fitting based on Halcon learning [II] meaure_ pin. Hdev routine
Network communication process
My-basic application 1: introduction to my-basic parser
STM32---IIC
Nb-iot technical summary
Solutions to compilation warnings in Quartus II
Synchronization of QT multithreading
Sql Server的存儲過程詳解
Brief discussion on Buck buck circuit
Google sitemap files for rails Projects - Google sitemap files for rails projects
Vofa+ software usage record
Some tips for using source insight (solve the problem of selecting all)
[trio basic from introduction to mastery tutorial 20] trio calculates the arc center and radius through three points of spatial arc
Measurement fitting based on Halcon learning [III] PM_ measure_ board. Hdev routine
QEMU STM32 vscode debugging environment configuration
Live555 push RTSP audio and video stream summary (I) cross compilation
Anonymous structure in C language
Management and use of DokuWiki