2016-05-26 2 views
-1

の多くを交差するにはどうすればセット、私はセットは最初から始めると交差する必要が セット

{1, 2, 3, 4} 
{2, 3, 4, 5} 
{3, 4, 5, 6} 
{4, 5, 6, 7} 
{5, 6, 7, 8} 

を持っています。私は

{1, 2, 3, 4} 
{2, 3, 4, 5} 
{3, 4, 5, 6} 

次の交差する必要があることを意味し

{2, 3, 4, 5} 
{3, 4, 5, 6} 
{4, 5, 6, 7} 

{3, 4, 5, 6} 
{4, 5, 6, 7} 
{5, 6, 7, 8} 

私はループ内でどのように行うことができますか?私はset1 & set2 & set3を使うことができることを知っていますが、次のset2 & set3 & set4などでどうすればいいですか?

+0

正確にはどういう意味ですか?これらのセットはリストの中にありますか? – AKS

答えて

2

まずあなたが、その後にあなたのリストを反復処理し、リスト内のすべてのあなたのセットを必要とします

sets = [ 
    {1, 2, 3, 4}, 
    {2, 3, 4, 5}, 
    {3, 4, 5, 6}, 
    {4, 5, 6, 7}, 
    {5, 6, 7, 8}, 
] 

for s1, s2, s3 in zip(sets, sets[1:], sets[2:]): 
    print(s1 & s2 & s3) 

またはより一般:

AMOUNT_OF_SETS_TO_INTERSECT = 3 
for sets_to_intersect in zip(*(sets[i:] for i in range(AMOUNT_OF_SETS_TO_INTERSECT))): 
    print(set.intersection(*sets_to_intersect)) 
-functionと平行
+0

私は60セットあれば、どうすればいいですか? – ldevyataykina

+0

交差する60セット? – Daniel

+0

私は60セットあり、私は3つのセット、すなわちset1とset2&set3、set2&set3&set4、set3&set4&set5'、...と交差したい。 – ldevyataykina

0

あなたは、複数のセットの交差を行うための方法を見つけるために探している場合は、this pageは基本的には、リスト内のあなたのセットを配置する方法がわからない場合はset.intersection()機能

を使用するように説明します答えを、持っていますそれを通ると、それは基本的なPythonである別の質問です。 Pythonで

、あなたがリスト内(セット含む)のオブジェクトを入れて、次のようにそれを横断することができます

# Build the list of sets 
set_list = [] 
for i in range(1, 6): 
    set_list.append(set([i, i+1, i+2, i+3])) 

# Now set_list contains the set (1,2,3,4), (2,3,4,5), ..., (5,6,7,8) 

# Traverse and do set intersection 
for i in range(len(set_list)-2): 
    intersection = set.intersection(set_list[i], set_list[i+1], set_list[i+2]) 
    print(intersection) 

# Will print: 
# set([3, 4]) 
# set([4, 5]) 
# set([5, 6])