【面试编程题】4- 给定两个数组,找出不同的元素

前面讲到两个数组,找出两个数组都存在的元素,既然有相同的元素,也就有不同的元素;

题目:

给定两个列表,找出不同的元素?

思路分析:

如果说按照一开始的思路,先循环遍历一个列表,然后再判断是否不在另一个列表中,那肯定是不行的,因为这样只能找出一个列表不同的元素,我们的要求是找出两个列表中不同的元素;这样就必须要先合并两个列表才行;

1、合并两个数组

2、遍历这个已经完成合并的数组

3、找出两个列表相同的元素,再将这个相同元素给剔除出去;

4、然后再进行去重

def different_str(alist, blist):
    res = [L for L in (alist + blist) if L not in [x for x in alist if x in blist]]
    return list(set(res))



a = [1,1,2,3,3,6,'a']
b = [1,'a','b']
print(different_str(a, b))
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用set()函数将两个数组转换为集合,然后使用差集操作符“-”找出不共有的元素。具体代码如下: ```python a = [1, 2, 3, 4, 5] b = [3, 4, 5, 6, 7] c = set(a) - set(b) | set(b) - set(a) print(c) ``` 输出结果为: ``` {1, 2, 6, 7} ``` 其中,set(a) - set(b)表示在a中但不在b中的元素,set(b) - set(a)表示在b中但不在a中的元素,两者取并集即为不共有的元素。 ### 回答2: Python是一种高级编程语言,非常适合进行数据处理和数组操作。如果需要找出不是两个数组共有的元素,可以使用set(集合)的方法来实现。集合在Python中是一个不重复元素的无序集合,可以通过数学运算符来比较和操作。 首先,创建两个数组: ``` a = [1, 2, 3, 4, 5] b = [3, 4, 5, 6, 7] ``` 接下来,将两个数组转换为集合,并使用Python的集合运算符进行比较操作: ``` set_a = set(a) set_b = set(b) result = set_a.symmetric_difference(set_b) ``` 这个操作返回的是两个数组中不相同的元素。结果为: ``` {1, 2, 6, 7} ``` 这代表只有1,2,6和7是两个数组中没有共有的元素。 还可以使用列表解析(list comprehension)来实现相同的操作,代码如下: ``` result = [x for x in a + b if x not in set_a.intersection(set_b)] ``` 这个操作将两个数组相加,并从总数中删除相同的元素。最后,使用列表解析计算不是交集的元素。结果是相同的: ``` [1, 2, 6, 7] ``` 总之,Python提供了多种方法来找到两个数组中不相同的元素。使用集合和列表解析等高效的技术可以简化代码,并提高计算效率。 ### 回答3: Python中,找出两个数组共有的元素是非常简单的,只需通过集合(set)的交集运算即可。但是,如果要找出不是两个数组共有的元素,需要更为复杂的方法。以下是一个可能的解决方案: 首先,将两个数组转换成集合,使用set()函数即可。然后,利用集合的差集运算,即set1 - set2(或者set2 - set1,取两个差集的并集)即可得到不是两个数组共有的元素。最终,将差集转换回列表或者数组即可。 具体实现方式如下: ``` list1 = [1, 2, 3, 4, 5] list2 = [4, 5, 6, 7, 8] set1 = set(list1) set2 = set(list2) diff = list(set1 - set2) + list(set2 - set1) print(diff) ``` 以上代码的输出结果将是[1, 2, 3, 6, 7, 8],即为不是两个数组共有的元素。通过简单的集合差集计算,我们成功地找到了不同元素,即便数组大小不一,元素内容不同,这种方法都可以适用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值