写代码也有本手俗手之分,而我们要善于发现妙手!_本手妙手俗手 编程

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

【实例2】组合:

list(__import__('itertools').combinations(range(1,5),3))
[(1, 2, 3), (1, 2, 4), (1, 3, 4), (2, 3, 4)]

【实例3】三角函数:

__import__('math').sin(__import__('math').pi/6)
0.49999999999999994

4. functools.reduce()的运用:某区间内某些数的积

【实例1】阶乘公式:

fact = lambda n:__import__('functools').reduce(lambda x,y:x*y,range(1,n+1))

【实例2】10~n间,7的倍数的累积:

n = int(input())
print(__import__('functools').reduce(lambda x,y:x*y,filter(lambda x:x%7==0,range(10,n+1))))

【实例3】20以内所有素数之积:

isPrime = lambda n:not any(not n%i for i in range(2,n) if i*i<=n) if n>1 else False
print(__import__('functools').reduce(lambda x,y:x*y,filter(isPrime,range(20))))

【实例4】正整数的各位数字之积:

num = ''
while not num.isnumeric():
    num=input('请输入一个正整数:')
else:
    print('各位上的数字之积:',__import__('functools').reduce(lambda x,y:int(x)*int(y),num))

5. 判断对象obj是否可迭代: 可以使用next(obj)的

>>> from collections.abc import Iterator
>>> isinstance(map(len,[[],[1],[2,3]]), Iterator)
True
>>> isinstance(filter(len,[[],[1],[2,3]]), Iterator)
True
>>> isinstance(__import__('itertools').combinations(range(1,5),3), Iterator)
True
>>> isinstance((i for i in range(100)), Iterator)
True
>>> isinstance([i for i in range(100)], Iterator)
False
>>> isinstance({i for i in range(100)}, Iterator)
False
>>> isinstance({i:i*i for i in range(100)}, Iterator)
False

6. 元组或列表中出现次数最少的所有元素:

nums = eval(input())  # 题目要求输入用半角逗号分隔的,只要用eval()函数即可

dic = {n:nums.count(n) for n in nums} # 以 数字:次数 为键值对组成字典

count = min(dic.values())  # 最少出现次数

print(*(k for k,v in dic.items() if v==count)) # 键值最小的所有键

7. 实例:有四个数能组成多少个互不相同且无重复数字的三位数,各是多少?

res = set()
 
for i in range(1,5):
    for j in range(1,5):
        for k in range(1,5):
            if i!=j!=k!=i:
                res.add(i*100+j*10+k)
 
print(len(res))
print(res)

或者:

res = set()
 
for i in range(1,5):
    for j in range(1,5):
        for k in range(1,5):
            if len(set([i,j,k]))==3:
                res.add(i*100+j*10+k)
 
print(len(res))
print(res)

或者:

from itertools import permutations as perm
lst = [i*100+j*10+k for i,j,k in perm([1,2,3,4],3)]
print(len(lst))
print(lst)

8. 实例:多项式求和 Sn=1-2!/3+3!/5-…+(-1)^(n+1)*n!/(2n-1)

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

😕/bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值