Python-所有彩票组合-按顺序无重复
我写了一个脚本来打印彩票组合。我的目标是:1-49之间的彩票中有6个数字,这意味着有13983816个组合。我想按顺序打印所有组合,同时确保没有重复 以下是我目前的代码:Python-所有彩票组合-按顺序无重复,python,Python,我写了一个脚本来打印彩票组合。我的目标是:1-49之间的彩票中有6个数字,这意味着有13983816个组合。我想按顺序打印所有组合,同时确保没有重复 以下是我目前的代码: import random numbers = [] for i in range(2): for j in range(6): numbers.append(random.randint(1,49)) for k in range(j): while numbe
import random
numbers = []
for i in range(2):
for j in range(6):
numbers.append(random.randint(1,49))
for k in range(j):
while numbers[j]==numbers[k]:
numbers[j]=random.randint(1,49)
print sorted(numbers)
numbers = []
f = open('combinations.txt', 'w')
f.write(str(sorted(numbers)))
问题是:
终端中的输出为:
[18, 20, 27, 32, 44, 48]
[5, 7, 10, 13, 33, 45]
我想从[1,2,3,4,5,6]
开始,到[44,45,46,47,48,49]
结束。所以我需要对结果进行排序
此外,我还尝试将列表转换为字符串,以便将结果放入一个大文本文件中,但目前我只是将[]
打印到文本文件中。使用:
要将组合打印到文本文件,请执行以下操作:
with open('combinations.txt', 'w') as f:
for comb in combination:
f.write(str(comb) + '\n')
您正在清除列表,然后写入文件
from itertools import combinations
f = open('combinations.txt', 'w')
for comb in combinations(range(1,50), 6):
f.write(str(comb))
f.write('\n')
f.close()
但是确保您至少有350 MB的可用磁盘空间!还有一些空闲时间
(我检查了348168480字节:
)
好了,只需在numb中添加尽可能多的数字,并将it变量更改为r的对应项,这真的很简单。谢谢阿什维尼。我不知道存在这样的模块。是否需要使用for循环将所有结果打印到txt文件中?我希望文本文件中的每个组合都在换行符上(\n)对结果进行迭代并写入文件不比解压缩迭代器更好吗?考虑到元素的数量是巨大的<代码>点击回车键,风险自负:在我的机器上打印49个选择6个组合到屏幕需要55865.068640177684秒。那是15个半小时!
from itertools import combinations
f = open('combinations.txt', 'w')
for comb in combinations(range(1,50), 6):
f.write(str(comb))
f.write('\n')
f.close()
>>> s = 0
>>> for comb in combinations(range(1,50), 6):
... s += len(repr(comb))+2
...
>>> s
348168480
**import itertools
f= open('combinations.txt','w')
numb = [1,2,3,4,5,6,7]
it = itertools.combinations(numb,3)
for x in it:
f.write(str(x))
f.write('\n')
f.close()**