前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python入门必刷题目

Python入门必刷题目

作者头像
stormwen
发布2019-08-05 20:18:40
7780
发布2019-08-05 20:18:40
举报
文章被收录于专栏:公众号:googpy

最近一直在自学python,刚学习完基础知识,但一看到题目,就两眼一抹黑,实在是怀疑自己有没有学过python。向一些python大神请教,给的建议都是要多接触项目,在项目中学习。下面我就把自己在leetcode上做的一些简单但又不错的题目分享给大家,希望入门的小伙伴们刷一下,大神自动忽略哈。

1.能被3或5整除的1000以内的数字和。

方法一:

sum = 0

for i in range(1,1000):

if i % 3== 0 or i % 5 == 0:

sum = sum + i

print(sum)

这个方法代码简单,也很容易理解,但是运行的效率低。虽然自己是一个小白,但也要有一颗成为大神的心,经过自己各种尝试,于是有了第二种方法。

方法二:

在1-1000中,3的倍数最小的是3,最大的是999。5的倍数最小的是5,最大的是995。3和5的倍数其中肯定有交集,而他们肯定是15的倍数,那么,15的倍数最小的是15,最大的是990。所以,我们要的答案应该是:3的倍数和+5的倍数和-15的倍数的和(交集)。

def sum_mod(min,max):

return(max/min)*(min+max)/2

print(sum_mod(3,999)+sum_mod(5,995)-sum_mod(15,990))

2.在一个数组里面移除指定的数字,并返回一个从大到小排序的新数组。比如:nums=[1,6,6,3,6,2,10,2,100],remove_num=6,要求返回时nums=[1,2,3,10,100]。

方法一:

nums = [1,6,6,3,6,2,10,2,100]

while 6 in nums:

nums.remove(6)

print(nums)

在这里我们用到了while循环。因为要删除的值在列表中出现多次,就需要使用循环来判断是否删除了所有这样的值。

方法二:

>>> nums = [1, 6, 6, 3, 6, 2, 10, 2, 100]

>>> newnums = list(filter(lambda x:x!=6, nums))

>>> print(sorted(newnums,reverse=True))

该方法中用到了python内置函数filter(),它主要用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,如果要转换为列表,可以用list()来转换。

函数filter()的语法是:filter(function,iterable),function——判断函数;iterable——可迭代对象。

此外,这种方法中还用到了lambda()函数。Lambda表示匿名函数,冒号前面的x表示函数参数匿名函数有限制,只能有一个表达式,不用写return,返回值就是该表达式的结果。

方法还使用了sorted()对列表进行临时排序。函数sorted()能够按特定顺序显示列表,同时不影响它们在列表中的原始排列顺序。

但需要注意的是,调用函数sorted()后,列表元素排列顺序并没有变。如果要与字母相反顺序显示列表,可向函数sorted()传递参数reverse=True。

3.从排序好的任意组列表里面删除重复元素(你不知道列表里面有多少个重复的元素)。比如:nums=[1,3,3,5,5,8,10,10,100],处理完之后是[1,3,5,8,10,100]。

nums = [1,3,3,5,5,8,10,10,100,100]

print(sorted(set(nums)))

答案中用到set()函数。Set()函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。函数的语法是:set([iterable]),iterable——可迭代的对象,该函数会返回一个新的集合对象。

4.从排序的数组里面,删除重复的元素。重复的数字最多只能出现2次。nums=[1,1,1,2,2,3],要求返回nums=[1,1,2,2,3]。

def question4(nums=[1,1,1,2,2,3]):

from collections import Counter

print(Counter(nums))

for k,v in Counter(nums).items():

if v > 2:

nums.remove(k)

print(nums)

question4(nums=[1,1,1,2,2,3])

上述方法用到了python标准库——collections模块的Counter类。

collections模块自python2.4版本开始被引入,包含了dict、set、list、tuple以外的一些特殊的容器类型。

Counter类的目的是用来跟踪值出现的次数。它是一个无序的容器类型,以字典的键值对形成存储,其中元素作为key,其计数作为vaule。计数值可以是任意的Interger(包括0和负数)。

通过实战来提高自己的功力,我觉得是一个很好的方法,但是不要贪多方面突破。要从一个点突破,以战养练,以练养战。我也是一个python小白,自己才疏学浅,很多地方不懂,如果有写的不到位的地方,欢迎小伙伴们拍砖。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-12-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 googpy 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档