Python 生成范围(1、2、3…99;1、2、3…99;)内的唯一数字系列,且无重复项

Python 生成范围(1、2、3…99;1、2、3…99;)内的唯一数字系列,且无重复项,python,numpy,range,generator,Python,Numpy,Range,Generator,我在业余时间用python编写代码还不到一年,它是我的第一种编程语言。我需要生成范围内的一系列数字(“1,2,3…99;1,2,3…99;”),并将它们与列表进行匹配。我成功地做到了这一点,但代码看起来很可怜,我在一些任务中失败了,例如以优雅的方式跳过带有重复/非唯一数字的序列,或者创建一个以序列长度为参数的单一函数(例如,3代表1-99、1-99和1-99、2代表1-99和1-99等等)避免手写每个系列的函数 在探索numpy多维范围ndindex(在我的测试中很慢)、创建预填充列表(太大)、

我在业余时间用python编写代码还不到一年,它是我的第一种编程语言。我需要生成范围内的一系列数字(“1,2,3…99;1,2,3…99;”),并将它们与列表进行匹配。我成功地做到了这一点,但代码看起来很可怜,我在一些任务中失败了,例如以优雅的方式跳过带有重复/非唯一数字的序列,或者创建一个以序列长度为参数的单一函数(例如,3代表1-99、1-99和1-99、2代表1-99和1-99等等)避免手写每个系列的函数

在探索numpy多维范围ndindex(在我的测试中很慢)、创建预填充列表(太大)、使用set to uniquify(slow)、为“if n in y…”尝试all()以及其他许多事情之后,我能够做的是,我有一个非常基本的代码,也是迄今为止最快的代码。在做了很多更改之后,我只是回到了开始,为了保存循环,我将“if n!=n”移到了每个for循环的开头,现在甚至不知道如何改进函数,或者在生成n系列数字的主函数中转换它。非常感谢您的任何建议

y = [#numbers]

def four(a,b):
    for i in range(a,b):
        for ii in range(a,b):
            if i != ii:
                for iii in range(a,b):
                    if i != iii and ii != iii:
                        for iiii in range(a,b):
                            if i != iiii and ii != iiii and iii != iiii:
                    if i in y and ii in y and iii in y and iiii in y:#exact match
                                    #do something
four(1,100)

创建数组[100],填充0到99之间的数字。然后使用随机生成器将它们混合。然后只取所需数量。

感谢用户2357112关于使用itertools的建议。排列(xrange(a,b),4)我做了以下操作,我非常满意,它既快又好:

def solution(d, a, q):
    for i in itertools.permutations(xrange(d, a), q):
    #do something

solution(1,100,4)

也要感谢这个出色的社区。

我不确定这些需求-您能举个例子说明一些输入以及预期的输出应该是什么吗?看起来像是您想要的。user2357112:谢谢,它做到了!生成请求的输出,没有重复,并且可以成为满足我需要的函数:-)我将对其进行实验并给出一些反馈!再次感谢