Python随笔30:Python基础编程练习题25~26

:本文所有代码均经过Python 3.7实际运行检验,保证其严谨性。

Python基础练习题25:合并两个列表并去重

输入两个列表alist和blist,要求列表中的每个元素都为正整数且不超过10(各自列表中不含重复元素);合并alist和blist,并将两个列表相互重复的元素去掉后输出一个新的列表clist。

同时为保证输出结果一致,请将集合内元素排序之后再输出。

如对于列表alist,可输出sorted(alist)。

输入格式:

共两行,每一行都用来输入列表中的元素值,以空格隔开。

输出格式:

共一行,以列表形式打印输出。

输入样例:

1 2 3
4 3 2

输出样例:

[1,2,3,4]

解答:解决的思路是,先在其中一个列表中去重两个列表共有的元素,再把两个列表合并到一个列表当中,并排序即可。

问题的难点在于如何去重。因为列表具有可变性,非常灵活,在变化的过程中可能出现元素减少等不确定情况。这时我们可以想办法让其变得“不可变”,才更有利于去重。

列表和元组的性质相当类似,最大的区别就是,一个是可变的,一个是不可变的。于是我们想到了列表元组互相转换的方法。

alist=list(map(int,input().split()))
blist=list(map(int,input().split()))
t = tuple(alist)  # 将具有可变性的列表转换为不可变的元组。
for i in t:  # 元组可防止列表可变之后产生不确定的错误。
    if i in blist:
        alist.remove(i)  # 在alist中去重和blist公有的元素。
lst = alist + blist  # 去重后的两个列表拼接成一个新的列表。
print(sorted(lst))
Python基础练习题26:列表元素绝对值排序

输入一个列表,要求列表中的每个元素都为整数;

将列表中的所有元素按照它们的绝对值大小进行排序,绝对值相同的还保持原来的相对位置,打印排序后的列表(绝对值大小仅作为排序依据,打印出的列表中元素仍为原列表中的元素)。

输入格式:

共一行,列表中的元素值,以空格隔开。

输出格式:

共一行,为一个列表。

输入样例:

-2 1 3

输出样例:

[1, -2, 3]

解答:列表的排序有sorted(list)和list.sort()两个常用的途径。它们可以采用一个可选参数key来根据key这个指标进行排序,详见本系列之前的文章:Python内置序列函数之reversed、sorted函数。

alist=list(map(int,input().split()))
alist = sorted(alist, key=lambda x: abs(x))
# 也可以用alist.sort(key=lambda x: abs(x))
print(alist)

To be continued.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容