Python隨筆30:Python基礎(chǔ)編程練習(xí)題25~26

:本文所有代碼均經(jīng)過(guò)Python 3.7實(shí)際運(yùn)行檢驗(yàn),保證其嚴(yán)謹(jǐn)性。

Python基礎(chǔ)練習(xí)題25:合并兩個(gè)列表并去重

輸入兩個(gè)列表alist和blist,要求列表中的每個(gè)元素都為正整數(shù)且不超過(guò)10(各自列表中不含重復(fù)元素);合并alist和blist,并將兩個(gè)列表相互重復(fù)的元素去掉后輸出一個(gè)新的列表clist。

同時(shí)為保證輸出結(jié)果一致,請(qǐng)將集合內(nèi)元素排序之后再輸出。

如對(duì)于列表alist,可輸出sorted(alist)。

輸入格式:

共兩行,每一行都用來(lái)輸入列表中的元素值,以空格隔開(kāi)。

輸出格式:

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

輸入樣例:

1 2 3
4 3 2

輸出樣例:

[1,2,3,4]

解答:解決的思路是,先在其中一個(gè)列表中去重兩個(gè)列表共有的元素,再把兩個(gè)列表合并到一個(gè)列表當(dāng)中,并排序即可。

問(wèn)題的難點(diǎn)在于如何去重。因?yàn)榱斜砭哂锌勺冃?,非常靈活,在變化的過(guò)程中可能出現(xiàn)元素減少等不確定情況。這時(shí)我們可以想辦法讓其變得“不可變”,才更有利于去重。

列表和元組的性質(zhì)相當(dāng)類似,最大的區(qū)別就是,一個(gè)是可變的,一個(gè)是不可變的。于是我們想到了列表元組互相轉(zhuǎn)換的方法。

alist=list(map(int,input().split()))
blist=list(map(int,input().split()))
t = tuple(alist)  # 將具有可變性的列表轉(zhuǎn)換為不可變的元組。
for i in t:  # 元組可防止列表可變之后產(chǎn)生不確定的錯(cuò)誤。
    if i in blist:
        alist.remove(i)  # 在alist中去重和blist公有的元素。
lst = alist + blist  # 去重后的兩個(gè)列表拼接成一個(gè)新的列表。
print(sorted(lst))
Python基礎(chǔ)練習(xí)題26:列表元素絕對(duì)值排序

輸入一個(gè)列表,要求列表中的每個(gè)元素都為整數(shù);

將列表中的所有元素按照它們的絕對(duì)值大小進(jìn)行排序,絕對(duì)值相同的還保持原來(lái)的相對(duì)位置,打印排序后的列表(絕對(duì)值大小僅作為排序依據(jù),打印出的列表中元素仍為原列表中的元素)。

輸入格式:

共一行,列表中的元素值,以空格隔開(kāi)。

輸出格式:

共一行,為一個(gè)列表。

輸入樣例:

-2 1 3

輸出樣例:

[1, -2, 3]

解答:列表的排序有sorted(list)和list.sort()兩個(gè)常用的途徑。它們可以采用一個(gè)可選參數(shù)key來(lái)根據(jù)key這個(gè)指標(biāo)進(jìn)行排序,詳見(jiàn)本系列之前的文章:Python內(nèi)置序列函數(shù)之reversed、sorted函數(shù)。

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.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容