Python编程技巧汇总(长期更新)

本篇博客主要收集从各种渠道看到的有意思的Python程序片段。

目录

  1. 求斐波那契数列的两种方法
  2. 应用sorted函数针对序列中的某一项元素进行排序
  3. 应用map函数根据指定函数对序列做映射
  4. 应用zip函数将可迭代序列中的对应元素打包
  5. 应用all函数判断质数

1. 求斐波那契数列的两种方法

第一种

def fib(n):
	if n==0 or n==1:
		return 1
	else:
		return fib(n-1)+fib(n-2)

第一种方法采用了递归的方法,但这种方法大量重复的计算,主要体现在fib(n-1)和fib(n-2)有大量的重复。可以结合字典进行优化。
第二种

pre={0:1,1:1}
def fib(n):
	if n in pre:
		return pre[n]
	else:
		newvalue = fib(n-1)+fib(n-2)
		pre[n] = newvalue #增加字典条目
		return vewvalue

2. 应用sorted函数针对序列中的某一项元素进行排序

sorted和sort都可以用于排序。sort是应用在列表上的一个方法,它对已存在的列表进行操作。sorted是一个内建函数,可以对更多的数据类型进行排序操作并返回新的数据。
sorted(iterable[,key[,reverse]])
其中,key是用来比较的元素,只有一个参数,具体函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。

students = [('江幸',89,15),('方鹏',80,14),('陈可',85,14)]
print(sorted(students,key = lambda s:s[1],reverse=True))
[('江幸',89,15),('陈可',85,14),('方鹏',80,14)]

3. 应用map函数根据指定函数对序列做映射

map(function,iterable,…),注意map函数返回的是可迭代数据,需要转换成list等输出。

print(list(map(lambda x,y:x+y,[1,3,5,7,9],[2,4,6,8,10])))
[3,7,11,15,19]

4. 应用zip函数将可迭代序列中的对应元素打包

zip(序列1,序列2,…),注意如果各序列的长度不一致,则返回的列表长度与最短的相同。另外,zip函数返回的是可迭代数据,需要转换成list等输出。

a = [1,2,3]
c = [4,5,6,7,8]
print(list(zip(a,c)))
[(1,4),(2,5),(3,6)]

d = {'blue':500,'red':100,'white':300}
print(dict(zip(d.values(),d.keys())))
{500: 'blue', 100: 'red', 300: 'white'}
print(list(zip(d.values(),d.keys())))
[(500, 'blue'), (100, 'red'), (300, 'white')]

可见,应用zip还可以轻松创建字典。

5. 应用all函数判断质数

all和any函数都以可迭代序列作为参数。当序列中的所有元素为True时,all返回True,否则为False。当序列中有一个元素为True时,any返回True,否则为False。

n = 47
all([1 if n%k !=0 else 0 for k in range(2,n))]
True
any([[],False,0])
False
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值