专栏首页公众号:googpyPython入门必刷题目

Python入门必刷题目

最近一直在自学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小白,自己才疏学浅,很多地方不懂,如果有写的不到位的地方,欢迎小伙伴们拍砖。

本文分享自微信公众号 - googpy(googpy),作者:stormwen

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-12-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 用leetcode学习Python

    之前一直分享Python的入门的知识,今天想和大家分享一些适合入门小白的题目,学习语言这个东西,我觉得没什么捷径,当具备一定的基础知识,只有通过题目巩固基础知识...

    stormwen
  • Python练手题目(八)

    编写一个接受10个整数(0到9之间)数组的函数,它以电话号码的形式返回这些数字的字符串。

    stormwen
  • 用实战题目学习Python

    昨天在公众号发了第一个广告,是商家主动找的我,考虑到自己现在的粉丝比较少,我没有收取任何广告费。这篇关于Python的广告,大家还是结合自身实际再去买课,互联网...

    stormwen
  • [Leetcode][python]删除排序数组中的重复项/删除排序数组中的重复项 II

    数组完成排序后,我们可以放置两个指针 ii 和 jj,其中 ii 是慢指针,而 jj 是快指针。只要 nums[i] = nums[j]nums[i]=nums...

    后端技术漫谈
  • LeetCode 75. 颜色分类(双指针)

    给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。

    Michael阿明
  • 1.比较排序之冒泡排序

      冒泡排序可以说是在排序算法中最为入门级别的算法之一了。因为其简单易于理解,常在课堂中作为排序的入门算法。   冒泡排序见名生意,其排序过程如同水里的泡一般由...

    用户1148394
  • LeetCode 1464. 数组中两元素的最大乘积

    给你一个整数数组 nums,请你选择数组的两个不同下标 i 和 j,使 (nums[i]-1)*(nums[j]-1) 取得最大值。

    Michael阿明
  • 【LeetCode】面试题 10.11. 峰与谷

    在一个整数数组中,“峰”是大于或等于相邻整数的元素,相应地,“谷”是小于或等于相邻整数的元素。例如,在数组{5, 8, 6, 2, 3, 4, 6}中,{8, ...

    韩旭051
  • 打卡群刷题总结0624——四数之和

    1、先将数组排序,接着使用暴力破解,最后两层循环可以使用two sum的方式求和。

    木又AI帮
  • 283 Move Zeroes

    /** * 题意:将0挪到末尾,并且不改数组中原有元素的顺序 * 解析:找到0元素,然后寻找其后面非0的元素,进行交换位置 * @param {numbe...

    用户1624346

扫码关注云+社区

领取腾讯云代金券