第4章-29 找出不是两个数组共有的元素

题目:

代码: 

X=input().split()
Y=input().split()
X=[int(i) for i in X]
Y=[int(i) for i in Y]
JIA=X+Y
n1=X[0]
n2=Y[0]
X=X[1:]
Y=Y[1:]
x=set(X)
y=set(Y)
z=x&y
z=(x-z)|(y-z)
Number=0
for i in JIA:
    if i in z:
        Number+=1
        if Number==1:
            print(i,end="")
        else:
            print(" ",end="")
            print(i,end="")
        z.remove(i)

结果:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用集合操作来实现。先将两个数组转换为集合,然后使用差集运算(A - B)获取第一个数组中不存在于第二个数组中的元素,再使用差集运算(B - A)获取第二个数组中不存在于第一个数组中的元素。最后将这两个结果集合合并即可。 Python 代码如下: ```python a = [1,2,3,4] b = [3,4,5,6] c = set(a) - set(b) | set(b) - set(a) print(c) ``` 运行结果: ``` {1, 2, 5, 6} ``` ### 回答2: 题目描述 有两个整数数组arr1和arr2,请编写一个函数找出不是两个数组共有元素,并以新数组的形式返回。 示例 输入:[4,3,2,1], [7,8,9,4] 输出:[3,2,1,7,8,9] 解析:在arr1中除了4以外的元素为[3,2,1],在arr2中除了4以外的元素为[7,8,9],将它们合并起来即为[3,2,1,7,8,9] 思路分析 可以先将两个数组合并为一个新的数组,然后找到不是两个数组共有元素。 方法一:使用set(集合)去重 将两个数组合并为一个新的数组arr,然后使用set去重得到一个新的数组setArr。为了统计元素出现的次数,可以从arr中遍历元素,使用dictionary(字典)记录每个元素出现的次数。最后遍历setArr数组,将字典中出现次数为1的元素添加到结果数组中。 方法二:使用双指针 将两个数组排序,然后使用两个指针分别指向两个数组中的元素。如果两个指针所指的元素不相等,则将较小的元素添加到结果数组中,并将指向该元素的指针向后移动一位。如果两个指针所指的元素相等,则将两个指针同时向后移动一位。最终得到的结果数组即为不是两个数组共有元素。 代码演示 方法一:使用set(集合)去重的代码实现如下: ### 回答3: 练习7-4 要求我们找出两个数组中不共有元素。问题实际上可以转化为求两个数组的差集。也就是说,我们需要找到那些只出现在一个数组中的元素。 要完成这个任务,我们可以使用循环和条件语句来依次遍历两个数组中的元素,判断它们是否在另一个数组中出现过。如果在,就跳过该元素;如果不在,就将该元素加入到结果列表中。 具体的做法可以是这样的: 1. 定义两个数组,以及一个空的结果列表。 2. 遍历第一个数组中的所有元素: a. 对于当前的元素,检查它是否在第二个数组中出现过。 b. 如果没有出现过,就将它加入到结果列表中。 c. 如果出现过,就跳过该元素。 3. 重复步骤2,但这次遍历的是第二个数组中的所有元素。 4. 返回结果列表。 下面是一个示例代码,它实现了上述的算法: ``` def diffArrays(arr1, arr2): # 定义结果列表 result = [] # 遍历第一个数组中的元素 for elem in arr1: # 如果该元素在第二个数组中没有出现过 if elem not in arr2: # 将它加入到结果列表中 result.append(elem) # 遍历第二个数组中的元素 for elem in arr2: # 如果该元素在第一个数组中没有出现过 if elem not in arr1: # 将它加入到结果列表中 result.append(elem) # 返回结果列表 return result ``` 这个函数接受两个数组作为参数,返回它们的差集。我们可以将它应用到题目中给出的示例,例如: ``` arr1 = [1, 2, 3, 4, 5] arr2 = [3, 4, 5, 6, 7] result = diffArrays(arr1, arr2) print(result) # 输出: [1, 2, 6, 7] ``` 以上就是我对于练习7-4的解答。通过这个练习,我们不仅复习了Python中的循环和条件语句,还学习了如何求两个数组的差集。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值