python合并数组

题目描述:

# '''

# case 1:

# '''

# S1 = [1,2]

# S2 = [1,2]

# S3 = [3,4,5]

# S4 = [3,4]

# S5 = [3,5]

# S6 = [6,7]

# S7 = [7,8]

'''

case 2:

我举的那个例子是个特殊情况,那个例子中S3,S4,S5同时相交于元素3,

这种肯定是要求并集的,但还有一种情况也要求并集,这种情况就是:

S3∩S4非空,S4∩S5非空,但S3∩S4∩S5是空集,

这种情况也要计算S3∪S4∪S5

'''

S1=[1,2]

S2=[1,2]

S3=[2,3,4,5]

S4=[3,4]

S5=[3,5]

S6=[6,7]

S7=[7,8]

S=[S1,S2,S3,S4,S5,S6,S7]

P1=[]

P2=[]

foriinS:

j=i

forjinS:

iflen(S)==1:

break;

else:

iflen(list(set(S[]).intersection(set(S[1]))))!=:

P1=list(set(S[]).union(set(S[1])).union(set(P1)))

if(len(S)==2):

print(P1)

else:

P2=P1

P1=[]

print(P2)

delS[]

感悟:

1.python列表操作里不允许变量类型的指针

2.case1类似于冒泡排序操作,这个是满足题目要求的,但是为了将所有的非空数组并起来,就有case2的情况,只不过修改一行代码

3.为了列表操作方面,使用了delete来移动指针,我认为也可以用循环左移或右移来做

4.当相邻两个数组没有交集,将结果输出

存在问题:这个程序只能向后进行查找,如果需要每一个从头,去掉j=i这一行,不过实际中也够用了

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180118G0C47P00?refer=cp_1026

同媒体快讯

扫码关注云+社区