问题
一家企业希望开发一款应用程序,帮助贴纸收藏家跟踪他们所拥有的卡片,贴纸数字以许多贴纸的形式出现,有时收藏家会得到重复的卡片,最重要的是被认为罕见的贴纸
条目
第一行有X个整数表示购买的贴纸,第二行有Y个整数表示稀有贴纸
退出
只有一行包含剩余的棍形数字
解决方案
for-loop方法:
bought_stickers = [int(i) for i in input().split()]
rare_stickers = [int(i) for i in input().split()]
rare_stickers_left = len(rare_stickers)
for i in rare_stickers:
if i in bought_stickers:
rare_stickers_left -= 1
print(rare_stickers_left)
列表理解方法:
bought_stickers = [int(i) for i in input().split()]
rare_stickers = [int(i) for i in input().split()]
rare_stickers_left = [i for i in rare_stickers if i not in bought_stickers]
print(len(rare_stickers_left))
我的问题是,从可读性、有效性和所有方面考虑,哪种解决方案是最好的
另外,哪一个更适合编写OLIMPIDS
此处不需要前2
for loops
:名单如下:
两者都不是:python方法只是简单地计算出现次数,而不是创建大型对象的新列表
这只是将所有
True
结果相加(取为1
)另一种可能是制作集合并取集合差异:
但是,这会产生生成三个集合并在临时集合上调用
len
的开销相关问题 更多 >
编程相关推荐