Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python嵌套循环唯一对_Python_Nested Loops - Fatal编程技术网

Python嵌套循环唯一对

Python嵌套循环唯一对,python,nested-loops,Python,Nested Loops,我试图编写一个嵌套循环,打印出某个范围内所有可能的“唯一对”数字。例如,如果范围为1到3,则唯一对为: (1,2) (1,3) (2,3) 如果范围为1到4,则唯一对为: (1,2) (1,3) (1,4) (2,3) (2,4) (3,4) 以下是我在1到3个月内是如何做到这一点的: for i in range(1,4): for j in range(2,4): if (i != j & j != (i-1)): print (i,j

我试图编写一个嵌套循环,打印出某个范围内所有可能的“唯一对”数字。例如,如果范围为1到3,则唯一对为:

(1,2) (1,3) (2,3)

如果范围为1到4,则唯一对为:

(1,2) (1,3) (1,4) (2,3) (2,4) (3,4)

以下是我在1到3个月内是如何做到这一点的:

for i in range(1,4):
    for j in range(2,4):
        if (i != j & j != (i-1)):
            print (i,j)

打印出(1,2),(1,3),(2,3)。但这是一个黑客,因为当我把范围改为1,5时,它不起作用。它打印出重复的对,如(1,5)和(5,1)。

您可能正在寻找类似的东西:

n = 4
x = [(i,j) for i in range(1,n+1) for j in range(i+1, n+1)]
print x
干杯,
Alex

您可能正在寻找这样的东西:

n = 4
x = [(i,j) for i in range(1,n+1) for j in range(i+1, n+1)]
print x
干杯, 范围(1,4)内的i的Alex

:
对于范围(i+1,4)内的j:#
对于范围(1,4)内的i:
对于范围(i+1,4)内的j:#使用:

只要您的输入是唯一的,就不会有重复的组合:

itertools.组合(iterable,r)

从输入
iterable
返回元素的
r
长度子序列

组合按字典排序顺序发出。因此,如果对输入iterable进行排序,则组合元组将按排序顺序生成

元素被视为唯一的是基于它们的位置,而不是它们的属性 价值因此,如果输入元素是唯一的,将不会重复 每个组合中的值

使用:

只要您的输入是唯一的,就不会有重复的组合:

itertools.组合(iterable,r)

从输入
iterable
返回元素的
r
长度子序列

组合按字典排序顺序发出。因此,如果对输入iterable进行排序,则组合元组将按排序顺序生成

元素被视为唯一的是基于它们的位置,而不是它们的属性 价值因此,如果输入元素是唯一的,将不会重复 每个组合中的值


您可以使用
itertools。组合

>>> from itertools import combinations
>>> print list(combinations(range(1,4), 2))
[(1, 2), (1, 3), (2, 3)]


您可以使用
itertools。组合

>>> from itertools import combinations
>>> print list(combinations(range(1,4), 2))
[(1, 2), (1, 3), (2, 3)]

参见模块

也许你想要的是

list(itertools.combinations(range(1,4),2)) == [(1, 2), (1, 3), (2, 3)]
见模块

也许你想要的是

list(itertools.combinations(range(1,4),2)) == [(1, 2), (1, 3), (2, 3)]

为什么
n+1
?难道n+1不就是5吗?也许我误解了什么?你需要n+1,因为范围(I,j)从I到j-1。所以如果我们使用(1,n),我们将有1到n-1。因此,如果n是4,那么我们将缺少4,我们将只有1、2和3。@AlexandruGodri我想他是在问为什么不将所有的
n+1
替换为5,因为我写它是为了一般目的。您只需将“n”更改为任意值,代码即可工作:)为什么
n+1
?难道n+1不就是5吗?也许我误解了什么?你需要n+1,因为范围(I,j)从I到j-1。所以如果我们使用(1,n),我们将有1到n-1。因此,如果n是4,那么我们将缺少4,我们将只有1、2和3。@AlexandruGodri我想他是在问为什么不将所有的
n+1
替换为5,因为我写它是为了一般目的。您只需将“n”更改为任意值,代码即可工作:)