【牛客网】邮票;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

发布了23 篇原创文章 · 获赞 9 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/Darren1921/article/details/93631509