专栏首页公众号:googpy用leetcode学习Python

用leetcode学习Python

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

我从leetcode上找了一些适合初学者的题目,大家和我一起刷一下,看看自己的基础知识有没有打扎实。

1.比如自然数10以下能被3或者5整除的有3,5,6,9,那么这些数字的和为23,现在求能被3或者5整除的1000以内数字的和。

print(sum([i for i in range(1,100) if i%3==0 or i%5==0]))
2318

代码解析:大家看我写的代码,用列表推导式一行代码就可以搞定,当然如果有不熟悉列表推导的可以看我前面写的文章,此外,代码中还用到两个内置函数——sum和range。

2.在一个数组中,移除指定的数字,并返回新的数组并从大到小排序,比如:

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

要求返回时

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

我写的代码是这样的:

list1 = list(filter(lambda n:n!=6,[1,6,6,3,6,2,10,2,100]))

print(sorted(list1))

代码解析:这行代码中有之前学到的匿名函数lambda,以及filter函数用于过滤掉不要的值,最后再用一个内置函数list,将元组转换成列表。最后再用内置函数sorted函数将新的列表从大小排序。

3.从排序好的任意数组列表里面删除重复元素(列表中元素数量未知)比如:

nums=[1,3,3,5,5,8,10,10,100,100]
#处理完之后是:[1,3,5,8,10,100]
nums = [1,3,3,5,5,8,10,10,100,100]

print(sorted(set(nums)))

代码解析:首先可以用比较容易记忆的内置函数set来实现,Python中set函数的作用是创建一个无序不重复元素集,可进行关系测试,删除重复数据。但我们也可以看出来,用set得到的结果是无序的,所以,最后需要用sorted函数排序一下就可以了。

当然,也可以按照下面代码中这种方法实现,这种方法得到的结果也是无序的,最后也需要用sorted函数排序一下。

nums1 = {}.fromkeys(nums).keys()

print(sorted(nums1))
[1, 3, 5, 8, 10, 100]

4.从排好序的数组里面,删除重复的元素,重复的数字最多能出现2次。

nums=[1,1,1,2,2,5],要求返回nums=[1,1,2,2,3]

我写的代码如下:

from collections import Counter

def question4(nums):
    print(Counter(nums))
    for k,v in Counter(nums).items():
        if v >2:
            nums.remove(k)

    print(nums)

question4([1,1,1,2,2,3])
Counter({1: 3, 2: 2, 3: 1})
[1, 1, 2, 2, 3]

代码解析:因为要统计单个元素出现的次数,所以需要用到Counter函数,它的作用是在一个数组内,遍历所有元素,将元素出现的次数记下来,接着用for in遍历每一个元素,最后用内置函数remove移除出现次数大于2的数字。

5.给定2个字符串s1,s2,判定s2能否给s1做循环移位得到字符串的包含。比如:

s1='AABBCD',s2='CDAA'

代码解析:构建辅助字符串,利用额外的空间,根据这个思路,我写了两种不同函数,可以实现功能,代码如下:

def problem5(src_str,des_str):
    new_str = src_str +src_str
    if des_str in new_str:
        return True
    else:
        return False

print(problem5('AABBCD','CDAA'))
def problem5():
    s1 = 'AABBCD'
    s2 = 'CDAA'
    s3 = s1 + s1

    if (len(s3) > len(s2)):
        print(s3.find(s2))
        return True
    else:
        print(s2.find(s3))
        return False

print(problem5())

在写的第二种代码种,先构建辅助字符串,然后用len函数统计字符串的长度,与s2相比较,最后返回预期的值。这里需要提到find函数,它的作用是检测字符串中是否包含子字符串str,如果包含子字符串返回开始的索引值,否则返回-1。

今天的实战题目就这么多,我写的代码有时候很简洁,如果你的基础知识不扎实,就不一定看的懂,所以,我一直觉得学习语言,一定要在前期打好基础,把基础语法学扎实了,才能盖高楼。大家看完我写的代码后,最好自己再敲一遍,切莫眼高手低,有好的解法,欢迎一起交流学习。

本文分享自微信公众号 - googpy(googpy),作者:叫我小包总

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

原始发表时间:2019-05-10

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python入门必刷题目

    最近一直在自学python,刚学习完基础知识,但一看到题目,就两眼一抹黑,实在是怀疑自己有没有学过python。向一些python大神请教,给的建议都是要多接触...

    stormwen
  • 爬虫学习开篇

    在这个大数据时代,尤其是人工浪潮兴起的时代,不论是工程领域还是研究领域,数据已经成为必不可少的一部分,而数据的获取很大程度上依赖于爬虫的爬取,所以爬虫也逐渐变得...

    stormwen
  • Python基本数据类型

    好长时间没有更文了,最近一直在查漏补缺Python的基础知识,下面把最近看学习视频中觉得比较重要的基础知识分享给大家。万丈高楼平地起,希望每一位初学Python...

    stormwen
  • 1000道Python题库系列分享三(30道)

    上一期题目链接:1000道Python题库系列分享二(48道) 上一题题目参考答案: 2.1 31 2.2 'F' 2.3 Python采用的是基于值得内...

    Python小屋屋主
  • 题解 ~ 输出所有的水仙花数

    打印所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该本身。 例如:153 是一个水仙花数,因为

    伪君子
  • Python最容易掉进去的10个坑

    相比于其他语言,Python的语法比较简单易学,但一旦不注意细节,刚入门的新手很容易就会掉进语法错误的坑里。

    sergiojune
  • Hack the Box - Obscurity

    大家好,今天给大家带来的CTF挑战靶机是来自hackthebox的“Obscurity”,hackthebox是一个非常不错的在线实验平台,能帮助你提升渗透测试...

    Aran
  • 【PAT乙级】链表元素分类

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    喜欢ctrl的cxk
  • Python中复合数据类型(list,turple以及切片,循环等操作)

    现在,c这个tuple不能变了,它没有append(),insert()这样的方法。但你可以使用c[0],c[-1],但不能赋值成另外的元素。 因为tupl...

    李智
  • 了解可执行的NPM包

    NPM是Node.js的包管理工具,随着Node.js的出现,以及前端开发开始使用gulp、webpack、rollup以及其他各种优秀的编译打包工具(大多数采...

    贾顺名

扫码关注云+社区

领取腾讯云代金券