Python中print(*sorted(map(int,a^b)))语句含义咨询
集合对称差计算代码解析
问题背景
输入格式:
- 第一行输入整数m;
- 第二行输入m个空格分隔的整数;
- 第三行输入整数n;
- 第四行输入n个空格分隔的整数。
输出格式:
- 按升序输出两组整数的对称差,每行一个整数。
给出的完整实现代码:
_, a, _, b = input(), set(input().split()), input(), set(input().split()) print(*sorted(map(int, a ^ b)), sep='\n')
核心语句print(*sorted(map(int, a ^ b)), sep='\n')详解
我们把这句话拆成几个关键步骤逐一解释:
1. a ^ b:计算集合的对称差
- 集合的
^运算符是symmetric_difference()方法的简写,作用是找出只在集合a中,或者只在集合b中的元素(排除同时出现在两个集合里的元素)。 - 举个例子:如果
a = {"1", "2", "3"},b = {"2", "3", "4"},那么a ^ b的结果是{"1", "4"}。 - 注意:这里的
a和b是通过input().split()生成的集合,所以集合里的元素都是字符串类型。
2. map(int, a ^ b):将字符串元素转为整数
map(int, 可迭代对象)会遍历对称差集合中的每个元素,把每个字符串形式的数字转换成整数类型。- 接上面的例子,这一步会把
{"1", "4"}转换成包含整数1和4的可迭代对象,确保后续排序是按数值大小而不是字符串字典序进行。
3. sorted(...):对整数进行升序排序
sorted()会把map返回的可迭代对象转换成一个升序排列的列表。- 上面的例子经过这一步后,会得到列表
[1, 4]。
4. print(*..., sep='\n'):展开列表并逐行输出
*是Python的解包运算符,它会把排序后的列表中的每个元素单独作为print函数的参数。比如print(*[1,4])等价于print(1, 4)。sep='\n'指定了参数之间的分隔符是换行符,这样每个元素会单独占一行输出,完美符合题目要求的输出格式。
内容的提问来源于stack exchange,提问作者preeeti
相关产品推荐
相关产品推荐

