有 999 个数,[000,001,002,...,999]
每 2 个组合成一对,
如
('000', '001')
('000', '002')
('000', '003')
('001', '002')
('001', '003')
('002', '003')
.............
当 2 个一组时,有 498501 种组合,显示打印出来耗费:3.6621711 秒
当 3 个一组时,有 165668499 种组合,显示打印出来耗费:20.6741886 秒
.............
请问当 400 个一组时,有多少种组合?怎么在 10 秒完成?
我需要对每组数据进行统计编号,
如
1:('000', '001')
2:('000', '002')
3:('000', '003')
这岂不是非常占用内存空间?有什么更快速,更优雅的写法吗
import itertools
import time
z=[]
for i in range(0,999):
if i<10:
i = '00'+str(i)
elif 10<=i and i<100:
i ='0'+str(i)
else:
i=str(i)
z.append(str(i))
# 计时开始
start = time.perf_counter()
# 排序全部组合
z2 =(itertools.combinations((z), 3))
end = time.perf_counter()
print('排序组合耗费:',end-start)
c=0
for i in z2:
c+=1
print('组合数:',c)
# 计时结束
end = time.perf_counter()
print('一共耗费:',end-start)
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.