python常用内建函数

常用内建函数
# 如何在遍历一个列表的同时获取当前下标?
# 普通人的做法
list = [1, 2, 3, 4, 5, 6]
index = 0
for i in list:
    print('下标%s' % index, i)
    index += 1

# 大佬的做法
list = [1, 2, 3, 4, 5, 6]
for i, j in enumerate(list):
    print('下标%s' % i, j)
# 如何使用函数修饰被迭代对象来优化循环
# 普通人的做法
list1 = [1, 2, 3, 4, 5, 6]
list2 = [2, 3, 4, 5, 6, 7]
list3 = [3, 4, 5, 6, 7, 8]
for i in list1:
    for j in list2:
        for k in list3:
            if i + j + k == 10:
                print(i, j, k)
# 大佬的做法 from itertools import product for i, j, k in product(list1, list2, list3): if i + j + k == 10: print(i, j, k)
#无限迭代器的使用
#普通人的做法
na = 2
while True:
    print(na)
    na +=1

#大佬的做法
from itertools import count
for i in count(2):#参数:表示从几开始
    print(i)
#无限重复之迭代器的使用
#普通人都做法
res = 'ABC'
while True:
    for i in res:
        print(i)

#大佬的做法
from itertools import cycle
for i in cycle('ABC'):
    print(i)
#如何找到列表中的元素进行无限重复,并可用控制重复的次数
#普通人都做法
list = [1,2,3,4,5,6]
for i in list:
    if i==list[2]:
        for j in range(10):
            print('1',list[2])

#大佬的做法
from itertools import repeat
list = [1,2,3,4,5,6]
res = repeat(list[2],10)#参数一:表示从几开始,参数二:表示重复次数
for i in res:
    print('2',i)
# 如何使用 islice 实现循环内隔行处理
需要把a.txt文件中的'---'去掉
1234
---
aadd
---
sadsad
---
asdasdad
# 普通人的做法
def test():
    with open('a.txt', 'r') as fp:
        for i, line in enumerate(fp):
            # 跳过无意义的 '---' 分隔符
            if i % 2 == 0:
                yield line.strip()
for i in test():
    print(i)

# 大佬的做法
from itertools import islice
# islice(seq, start, end, step) 函数和数组切片操作*( list[start:stop:step] )有着几乎一模一样的参数。
# 如果需要在循环内部进行隔行处理的话,只要设置第三个递进步长参数 step 值为 2 即可(默认为 1 )*。
def parse_titles_v2():
    with open('a.txt', 'r') as fp:
        # 设置 step=2,跳过无意义的 '---' 分隔符
        for line in islice(fp, 0, None, 2):
            yield line.strip()
for i in parse_titles_v2():
    print(i)
# 使用 takewhile 替代 break 语句
# 普通人的做法
list = [1, 2, 3, 4, 5, 6]
for i in list:
    if i == 4:
        break
    else:
        print(i)

# 大佬的做法
from itertools import takewhile
list = [1, 2, 3, 4, 5, 6]
for i in takewhile(lambda x: x != 4, list):#参数一:限制条件函数,list表
    print(i)
#如何使用列表链(将一组迭代对象串起来,形成一个更大的迭代器)
#普通人的做法
v1 = [11,22,33]
v2 = [44,55,66]
all = v1+v2
for c in all:
    print(c)

#大佬的做法
from itertools import chain
v1 = [11,22,33]
v2 = [44,55,66]
new_list = chain(v1,v2)
for c in new_list:
    print(c)
#偏函数的使用
from functools import partial
def fuc1(a1,a2):#一个函数有两个参数
    print('fuc1',a1,a2)
    return a1-a2
def fuc2(a3,a4):
    print('fuc2',a3,a4)
    return a3+a4
new_fuc = partial(fuc1,fuc2(1,2))#functools.partial可以传函数名和fuc的第一个参数
res = new_fuc(3)
print(res)
#----------结果
#fuc2 1 2
#fuc1 3 3
#0
# 这样理解执行函数先执行fuc2,打印fuc2 1 2
# fuc2的返回值和fuc1函数存放在new_fuc对象中
# new_fuc(3),把3传入fuc1函数的a1,把fuc2返回值放入a2,打印fuc2 3 3
# res打印0

 

转载于:https://www.cnblogs.com/RainBol/p/10783098.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值