怎么样让python计算任意六位数的排列组合?

2020-03-23 19:01发布

3条回答
it小哥哥
2楼 · 2020-09-17 09:50





求三位数组合

lst=[3,6,2,7]


这四个数字能组成多少个互不相同且无重复数字的三位数?比如362算一个,326算一个,请逐个输出他们

思路分析

从4个数里面取3个数,且不重复,然后进行拼接,做3个for循环加判断不相等即可。

与排列组合相同,取三个数,不放回,并且有顺序。






C



4



3







P



3



3




=



4





3



!



=



24




C_4^3*P^3_3=4*3!=24



C43∗P33=4∗3!=24种取法可能。(题目特殊,lst各不相同,若有相同需要先在重复中二选一






C



2



1





C_2^1



C21,但对于结果输出不影响,只是增加取法可能)

示例代码

lst=[3,6,2,7]

foriinlst:

forjinlst:

forkinlst:

ifi!=jandj!=kandk!=i:

print(int(str(i)+str(j)+str(k))


判断方式还可以是:

ifinotin(j,k)andj!=k:


分析时间复杂度

在时间复杂度上面n=4,有3个for循环。

第一个for循环中f(n)=n

第二个for循环中f(n)=n^2

第三个for循环中f(n)=n^3

该算法的为n^3+n^2+n

推导大O阶方法:

#1、用常数1取代运行时间中的所有加法常数

n^3+n^2+1

#2、在修改后的运行次数函数中,只保留最高阶项

n^3

#3、如果最高阶项存在且不是1,则去除与这个项相乘的常数

n^3


故最终时间复杂度O(n)=n^3

优化思考

第二个for循环和第三个for循环,最终要取的数据都是与第一个for循环取得不同,那么我们在循环过程中直接建立取数方法。比如第1位数被取了之后,第二个for循环只用从剩下的数据当中取数即可。

代码示例

lst=[3,6,2,7]

forainlst:

tmp=lst.copy()

tmp.remove(a)

forbintmp:

tmp2=tmp.copy()

tmp2.remove(b)

forcintmp2:

print(a*100+b*10+c)


这样子反而空间复杂度增加了,语句变得冗余。


i
3楼 · 2020-05-19 09:01
# 输出随机6位数
import random

print(f'{random.randint(0,999999):06}')

# 计算6位数的排列组合数
print(10**6)


灰机带翅膀
4楼 · 2021-08-26 14:25

直接上代码

image.png

相关问题推荐

  • 什么是Python列表2020-12-03 10:47
    回答 20

    在python中列表(list)是使用最频繁的数据类型,在其他语言中通常叫做数组。列表由一系列按特定顺序排列的元素组成。你可以创建包含字母表中所有字母、数字0~9或所有家庭成员姓名的列表;也可以将任何东西加入列表中,其中的元素之间可以没有任何关系。...

  • 回答 16

    简单来讲,爬虫就是一个探测机器,它的基本操作就是模拟人的行为去各个网站溜达,点点按钮,查查数据,或者把看到的信息背回来。就像一只虫子在一幢楼里不知疲倦地爬来爬去。...

  • 回答 17

    因为Python可以做数据分析  数据挖掘,数据挖掘的话简单来说就是爬虫工程师

  • 回答 13

    1)学习爬虫,可以私人订制一个搜索引擎,并且可以对搜索引擎的数据采集工作原理进行更深层次地理解。有的朋友希望能够深层次地了解搜索引擎的爬虫工作原理,或者希望自己能够开发出一款私人搜索引擎,那么此时,学习爬虫是非常有必要的。简单来说,我们学会了...

  • 回答 4

    大部分数据都是可以爬的,不过有些网站对数据的加密做的非常好,在解析的过程中要消耗很长的时间。

  • 爬虫是什么?2020-08-26 10:11
    回答 10

    抓取数据,进行统计和分析

  • 成都爬虫好找工作吗2020-10-14 10:23
    回答 12

    在成都找网络爬虫工作也是可以的,自己可以先到招聘软件上看看当地招聘的需求量以及薪资待遇水平怎么样,要是能达到自己的预期效果可以在当地工作,要不可以到北上广深找工作,就业机会能更多些。...

  • 回答 9

    两种方式,一种是MySQL自带的命令行窗口,一种是图形用户管理工具,前者类似于一个cmd窗口,日常管理维护数据库不是很方便,后者就是一个图形用户管理软件,种类繁多,使用起来也相对容易一些...

  • 回答 4

    不可以所有编程最起码都得学函数,分支,循环之后才可以编写代码

  • 回答 2

    一台主机  多台从机

  • 回答 3

    一、分布式爬虫架构在了解分布式爬虫架构之前,首先回顾一下Scrapy的架构,如下图所示。Scrapy单机爬虫中有一个本地爬取队列Queue,这个队列是利用deque模块实现的。如果新的Request生成就会放到队列里面,随后Request被Scheduler调度。之后,Request交给Down...

  • 回答 7

    代理ip网址http://www.goubanjia.com/http://www.ip181.com/https://www.kuaidaili.com/python 环境安装requests库安装bs4库proxies设置代理服务器地址proxies = {'http':  'http://61.155.164.110:3128'}http://www.goub......

  • 回答 2

    import  requestsimport  jsonfrom bs4 import BeautifulSoupfrom    urllib.request import urlretrieve#构造函数def sk():    #请求头    header={        'user-Agent':'Mozilla/5.0 (Windows NT 10.0; W...

  • 回答 3

    针对字符串中本身含有双引号,我们可以利用单引号进行字符串的定义来解决这个问题。使用单引号作为字符串的界限就不会引起识别异常问题,保证字符串的合理定义

  • 回答 2

    要用unicode编码来替换。

没有解决我的问题,去提问