数据结构算法(菲波那切数列、队列和栈)
程序员文章站
2022-05-30 22:18:17
回文数:a=input('输入:')b=a[::-1]if a==b: print('{} 是回文数'.format(a))else: print('{} 不是回文数'.format(a))斐波那契数列:## 迭代器:斐波那契数列class FeiBo(): def __init__(self,n): self.a = 1 self.b = 1 self.c = 0 self.n = n def...
回文数:
a=input('输入:') b=a[::-1] if a==b: print('{} 是回文数'.format(a)) else: print('{} 不是回文数'.format(a))
斐波那契数列:
## 迭代器:斐波那契数列 class FeiBo(): def __init__(self,n): self.a = 1 self.b = 1 self.c = 0 self.n = n def __iter__(self): return self def __next__(self): if self.c < self.n: r = self.a
self.a,self.b = self.b, self.a+self.b
self.c+=1 return r else: raise StopIteration
f=FeiBo(9) for i in f: print(i) # ## 生成器: # # def FeiBo(n): # a=1 # b=1 # for i in range(n): # yield a # a,b=b,a+b # f=FeiBo(10) # for i in f: # print(i)
是否存在重复字母:
1 def uu(): 2 str='nsjadsabjkfas' 3 b=set() 4 for i in str: 5 b.add(i) 6 if len(b)==len(str): 7 return True 8 else: 9 return False 10 a=uu() 11 print(a) 是否存在重复字母
输出四个六:
"""
输出4个6
""" def num(): return [lambda x:i*x for i in range(4)] print([m(2) for m in num()]) """
将列表推导式[]变成(),相当于生成一个生成器,没有参数延时生效
输出:[0, 2, 4, 6]
""" def num(): return (lambda x:i*x for i in range(4)) print([m(2) for m in num()]) """
在列表推导式中及时传参,i=i
输出:[0, 2, 4, 6]
""" def num(): return [lambda x,i=i:i*x for i in range(4)] print([m(2) for m in num()])
def get_index(nums, target): """
:param nums:传的参数列表
:param target:目标值
:return:索引值列表
""" index_dict={ } for index,num in enumerate(nums): tem=target-num
tem_index=index_dict.get(tem,'') if tem_index: print(tem_index,index) else: index_dict[num]=index if __name__ == '__main__': pp = get_index([2, 4, 5, 8, 1, 11, 4, 15, 7], 9)
利用队列实现栈:
class Stack(object): '''栈''' def __init__(self): self.__list = [] def push(self, item): '''添加一个元素item到栈''' self.__list.append(item) def pop(self): '''弹出栈顶元素''' return self.__list.pop() def peek(self): '''返回栈顶元素''' if self.__list: return self.__list[-1] else: return None def is_empty(self): '''判断是否为空''' return self.__list == [] # return not self.__list def size(self): '''返回栈的元素个数''' return len(self.__list) if __name__ == '__main__': s = Stack()
一球从100米高度*落下,每次落地后反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?
a = [100] #每个‘反弹落地’过程经过的路程,第1次只有落地(100米) h = 100 #每个‘反弹落地’过程,反弹的高度,第1次为100米 print('第1次从%s米高落地,走过%s米,之后又反弹至%s米。' % (h, a[0], h/2)) for i in range(2,11): #第1次已初始化,再循环9次 a.append(h) #先计算路程,再高度减半,因为一个‘反弹落地’为2个高度 h = h / 2 print('第%s次从%s米高落地,共走过%s米,之后又反弹至%s米。' % (i, h, sum(a), h / 2))
s = "Let's take LeetCode contest" b=" ".join(s.split(' ')[::-1])[::-1] print(b)
s="Let's take LeetCode contest" b=s.split(' ') c=' '.join([i[::-1] for i in b]) print(c)
代码仅供参考,有不足之处望指正
本文地址:https://blog.csdn.net/weixin_49189239/article/details/107155183
上一篇: Flutter第一部分(UI)第七篇:路由导航实践
下一篇: win7忘记密码