【牛客網】郵票;python set()集合函數,去重;“&”、“|”、“-”求並集、交集、差集

題目描述

某人有8 角的郵票5 張,1 元的郵票4 張,1 元8 角的郵票6 張,用這些郵票中的一張或若干張可以得到多少中不同的郵資?

輸入描述:

輸出描述:

輸出一行,表示題目所求。

本人解答:

a = [8, 10, 18]
b = [5, 4, 6]
all = []
for i in range(b[0] + 1):
    for j in range(b[1] + 1):
        for z in range(b[2] + 1):
            all.append(a[0] * i + a[1] * j + a[2] * z)
all_ = []
for x in all:
    if x not in all_:
        all_.append(x)
print(len(all_) - 1)

運行結果:

優質解答:

L = []
for i in range(6):
    for j in range(5):
        for k in range(7):
            L.append(i * 8 + j * 10 + k * 18)
print(len(set(L)) - 1)

set()函數:

set() 函數創建一個無序不重複元素集,可進行關係測試,刪除重複數據,結合“&”、“|”、“-”還可以計算求並集、交集、差集等。

例如:

m = [1, 2, 3, 4, 5, 1, 2]
n = [1, 2, 3, 6, 7, 6, 7]
print(type(m), type(n))
m_ = set(m)
n_ = set(n)
print(m_, type(m_), n_, type(n_))  # 集合中的數據不重複,可以用來數據去重
print(m_ & n_)  # 求交集
print(m_ | n_)  # 求並集
print(m_ ^ n_)  # 求差集,兩個集合除了並集以外的元素
print(m_ - n_)  # 求m_集合比n_多出的元素
print(n_ - m_)  # 求n_集合比m_多出的元素

輸出:

<class 'list'> <class 'list'>
{1, 2, 3, 4, 5} <class 'set'> {1, 2, 3, 6, 7} <class 'set'>
{1, 2, 3}
{1, 2, 3, 4, 5, 6, 7}
{4, 5, 6, 7}
{4, 5}
{6, 7}

# 列表(list)、元組(tuple)、集(set)、數組(array)的相互轉換:https://blog.csdn.net/Darren1921/article/details/93731483

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章