当前位置:首页 » 编程语言 » python排列组合函数

python排列组合函数

发布时间: 2025-08-11 12:54:03

⑴ 如何用python列出N个数字的所有排列组合

>> from itertools import combinations, permutations
>> permutations([1, 2, 3], 2)
<itertools.permutations at 0x7febfd880fc0>
# 可迭代对象
>> list(permutations([1, 2, 3], 2)) #排列
[(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)]
>> list(combinations([1, 2, 3], 2)) #组合
[(1, 2), (1, 3), (2, 3)]

⑵ Python实现,输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接

你的例子第一列全是 3,我给个例子吧:[321, 32, 3, 4],输出该是 321,32,3,4。

第一个数越大,则应该排在后面,毕竟 4XXX 是比 3XXX 大的。

setp1:[0][1][2]
321
32
3
4
排序第0列,越大的排越后。
ret=[?,?,?,4]

setp2:[0][1][2]
321
32
3<3><-补位3,因为3是同3组第一个元素。
排序第1列,越大的排越后。
ret=[?,?,3,4]

setp3:[0][1][2]
321
32<3><-补位3,因为3是同3组第一个元素。
排序第2列,越大的排越后。323比321大,所以……
ret=[?,32,3,4]

只剩一个,那个排第一:
ret=[321,32,3,4]

以上就是基本思路了。综上可得:

1. 先按 [0] 列分组:

2. 组中每个数都补位到同样长度,然后再排序。

完整代码:

defjoinmin(ls):
groups={}
foriteminls:
prefix=item
n=0
whileprefix>10:
prefix//=10
n+=1
groups.setdefault(prefix,[]).append([item,n])
sorted_keys=list(sorted(groups))
ret=0
forprefixinsorted_keys:
items=groups[prefix]
max_n=max([t[1]fortinitems])
presort_items=[]
foritem,item_ninitems:
padding=item
n=item_n
whilemax_n>n:
padding*=10
padding+=prefix
n+=1
presort_items.append((padding,item,item_n))
for_,item,ninsorted(presort_items):
whilen>-1:
ret*=10
n-=1
ret+=item
returnret

不是看在你的分上答的,不过这种小题目蛮有趣的。

热点内容
压缩机渗油 发布:2025-08-11 16:56:06 浏览:316
手机2g配置能玩什么游戏 发布:2025-08-11 16:46:32 浏览:470
不适合编程 发布:2025-08-11 16:46:31 浏览:924
wdcpphp版本 发布:2025-08-11 16:44:05 浏览:542
我的世界进入忍者服务器 发布:2025-08-11 16:36:43 浏览:66
怎么隐藏u盘里的文件夹 发布:2025-08-11 16:09:31 浏览:778
小鹏特斯拉比亚迪哪个配置高 发布:2025-08-11 16:08:36 浏览:193
相机相片存储 发布:2025-08-11 16:06:17 浏览:667
安卓机怎么拍出高清视频 发布:2025-08-11 15:55:52 浏览:332
staticlinux 发布:2025-08-11 15:51:37 浏览:58