music算法_Python刷LeetCode,初级算法总结(1)

最近半个多月,使用Python刷了LeetCode上的初级算法模块,共九个单元,49道算法题,包括数组、字符串、链表、树、排序和搜索、动态规划、设计问题、数学以及其他。题目总的来说比较简单,但其中也有不会做和使用比较笨的方法的情况,接下来对这一阶段做一个总结,记录下算法使用到的方法和一些比较好的思路。

(1)set()函数,set()函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。

>>>x = set('runoob')
>>> y = set('google')
>>> x, y
(set(['b', 'r', 'u', 'o', 'n']), set(['e', 'o', 'g', 'l']))   # 重复的被删除
>>> x & y         # 交集
set(['o'])
>>> x | y         # 并集
set(['b', 'e', 'g', 'l', 'o', 'n', 'r', 'u'])
>>> x - y         # 差集
set(['r', 'b', 'u', 'n'])
>>>

(2)counter函数,collections模块的counter函数是在一个数组内,遍历所有元素,将元素以及出现的次数用字典形式记下来

>>> import collections
>>> a = [1,4,2,3,2,3,4,2]
>>> dic = collections.Counter(a)
>>> print(dic)
Counter({2: 3, 3: 2, 4: 2, 1: 1})
>>> 

(3)append()函数和extend()函数,list.append(object) 向列表中添加一个对象object;list.extend(sequence) 把一个序列seq的内容添加到列表中

append()
>>> music_media = ['compact disc', '8-track tape', 'long playing record']
>>> new_media = ['DVD Audio disc', 'Super Audio CD']
>>> music_media.append(new_media)
>>> print(music_media)
['compact disc', '8-track tape', 'long playing record', ['DVD Audio disc', 'Super Audio CD']]
>>> 
extend()
>>> music_media = ['compact disc', '8-track tape', 'long playing record']
>>> new_media = ['DVD Audio disc', 'Super Audio CD']
>>> music_media.extend(new_media)
>>> print(music_media)
['compact disc', '8-track tape', 'long playing record', 'DVD Audio disc', 'Super Audio CD']
>>> 

(4)enumerate() 函数,enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。返回 enumerate(枚举) 对象。

>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter']
>>> enumerate(seasons)
<enumerate object at 0x000001DF39D70EA0>
>>> list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
>>> list(enumerate(seasons, start=1))    #下标从1开始
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
>>>

(5)zip()函数,zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。

>>>a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b)     # 打包为元组的列表
[(1, 4), (2, 5), (3, 6)]
>>> zip(a,c)              # 元素个数与最短的列表一致
[(1, 4), (2, 5), (3, 6)]
>>> zip(*zipped)          # 与 zip 相反,*zipped 可理解为解压,返回二维矩阵式
[(1, 2, 3), (4, 5, 6)]
>>>

(6)使用s[::-1]可以将序列s反转,[]中有三个参数,参数之间由:分隔,第一个参数是开始索引,第二个参数是结束索引,第三个参数是步长,如果步长为负,则从后向前扫描。

(7)find()函数和rfind()函数find() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果包含子字符串返回开始的索引值,否则返回-1。rfind() 返回字符串最后一次出现的位置(从右向左查询),如果没有匹配项则返回-1。

(8)strip()函数,s为字符串,rm为要删除的字符序列,s.strip():删除s字符串中开头、结尾处,位于 rm删除序列的字符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值