2014-01-25 73 views
7

我如何创建一个包含两个元素的每个元组的元组集合?每个元组将有一个xy值:(x,y) 我有1到50的数字,并希望通过50在python中创建元组集合

S = {(1,1),(1,2),(1,3),(1,4)...(1,50),(2,1)......(50,50)} 

我试图

通过50 y也1分配 x所有值1
positive = set(tuple(x,y) for x in range(1,51) for y in range(1,51)) 

但错误消息说,一个元组只接受一个参数。我需要做什么来设置元组列表?

+3

变化'元组(X,Y)''向(X,Y)' –

+0

..because'tuple'转换其他iterables成元组(例如元组' ([1,2]) - >'(1,2)'),所以它只需要一个参数。 –

回答

11
mySet = set(itertools.product(range(1,51), repeat=2)) 

OR

mySet = set((x,y) for x in range(1,51) for y in range(1,51)) 
+3

'itertools.product(range(1,51))'达到50,对不对? –

+0

@ZacharyYoung:很好,谢谢。你是对的。固定! – inspectorG4dget

1

tuple只接受一个参数。只需使用圆括号在元组中明确写入。

#     vvvvv 
>>> positive = set((x,y) for x in range(1,5) for y in range(1,5)) 
>>> positive 
{(1, 2), (3, 2), (1, 3), (3, 3), (4, 1), (3, 1), (4, 4), (2, 1), (2, 4), (2, 3), (1, 4), (4, 3), (2, 2), (4, 2), (3, 4), (1, 1)}