2015-04-04 76 views
-2

我将如何使用python实现以下内容?我试过使用lambda表达式和其他一些方法,但是我没有得到想要的结果。基本上,我应该得到一组满足检查的关系。即他们必须是相互分割的,所以{(1,1), (1,2), (1,3),...(6,6)}.设置关系的Python实现

这里的实际问题:

在Python中,设置一个变量说S = {1,2,3,4,5,6};然后按照下列步骤操作:“列出集{1,2,3,4,5,6}上的关系R = {(a,b) : a divides b}中的所有有序对。”

+1

请向我们展示您尝试过的代码。可互相划分的 – yole 2015-04-04 21:17:04

+0

不同于b。 – jazzz 2015-04-04 21:26:11

回答

1

您可以通过列表理解这样做 -

S = [1,2,3,4,5,6] 
result = [ (x,y) for x in S for y in S if y%x==0] 
1

您可以在列表解析中使用itertools.product,并且只要你想,他们互相整除你可以使用条件i%j==0 or j%i==0

>>> from itertools import product 
>>> [(i,j) for i,j in product(S,repeat=2) if i%j==0 or j%i==0] 
[(1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (1, 6), (2, 1), (2, 2), (2, 4), (2, 6), (3, 1), (3, 3), (3, 6), (4, 1), (4, 2), (4, 4), (5, 1), (5, 5), (6, 1), (6, 2), (6, 3), (6, 6)] 
+0

不错的使用itertools ,,我想它是一样的拉链(S,S)..不是吗? – jazzz 2015-04-04 21:31:46

+1

@jazzz一点都不!那个'zip'会给这些对具有相同的值! – Kasramvd 2015-04-04 21:32:31