当前位置:网站首页>实例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中的项目数量相同,即会返回一个全排列的结果。
边栏推荐
- Use indent to format code
- Shape template matching based on Halcon learning [viii] PM_ multiple_ models. Hdev routine
- DokuWiki deployment notes
- Buildroot system for making raspberry pie cm3
- STM32 --- NVIC interrupt
- Problem solving: interpreter error: no file or directory
- Charge pump boost principle - this article will give you a simple understanding
- Network communication model -- Network OSI tcp/ip layering
- [trio basic tutorial 18 from introduction to proficiency] trio motion controller UDP fast exchange data communication
- 实例010:给人看的时间
猜你喜欢

Nb-iot technical summary

Management and use of DokuWiki (supplementary)

Carrier period, electrical speed, carrier period variation

DCDC circuit - function of bootstrap capacitor

STM32 tutorial triple ADC interleaved sampling

Let's briefly talk about the chips commonly used in mobile phones - OVP chips

Solutions to compilation warnings in Quartus II

Negative pressure generation of buck-boost circuit

Shell script basic syntax

How to select conductive slip ring
随机推荐
OC and OD gate circuit
Shell script realizes the reading of serial port and the parsing of message
1-stm32 operation environment construction
QEMU demo makefile analysis
Use indent to format code
C WinForm [realize the previous and next selection pictures] - practice 7
Negative pressure generation of buck-boost circuit
STM32 --- configuration of external interrupt
[cloud native | learn kubernetes from scratch] III. kubernetes cluster management tool kubectl
PMSM dead time compensation
Sql Server的存储过程详解
Stm32--- systick timer
Development tools -- gcc compiler usage
MySQL MHA high availability cluster
My-basic application 1: introduction to my-basic parser
STM32 single chip microcomputer -- volatile keyword
After installing the new version of keil5 or upgrading the JLINK firmware, you will always be prompted about the firmware update
Weidongshan Internet of things learning lesson 1
Network communication model -- Network OSI tcp/ip layering
NTC thermistor application - temperature measurement