Python-所有彩票组合-按顺序无重复

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

我写了一个脚本来打印彩票组合。我的目标是: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 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()**