之前一个不小心把之前的全部删除了,也没有办法回复,所以以后还是在博客上记录一下
内置函数
55个内置函数
带key的max() min() filter() map() sorted()
匿名函数
lambda 参数1,参数2: 返回值表达式
五个特殊的内置函数可以结合使用
生成器和迭代器
用map来处理字符串列表,把列表中所有人都变成sb,比如alex_sb
name = ['alex', 'wupeiqi', 'yuanhao', 'nezha']
def func(item):
return item + '_sb'
ret = map(func, name)
for i in ret:
print(i)
print(list(i)) # list把字符串拆开变为每一个元素
print(list(ret)) # ret为迭代器,取完后就不含有元素,返回一个空列表
ret = map(lambda item: item+'_sb', name) # lambda与函数无关
print(list(ret))
print(list(ret)) # ret迭代器,取完后依旧消失
用filter()函数处理数字列表,将列表中所有的偶数筛选出来
num = [1, 3, 5, 7, 8]
def func1(x):
if x % 2 == 0:
return True # return x % 2== 0
ret = filter(func1, num) # func和可迭代的 filter返回值为迭代器
print(list(ret))
ret = filter(lambda x: True if x % 2 == 0 else False, num) # 冒号后面可以写表达式和for循环
随意写一个20行以上的文件
运行程序,先将内容读取到内存中,用列表存储
接收用户输入页码,每页5条,仅仅输出当页的内容
with open('C:/Users/dell/Desktop/test20.txt', encoding='utf-8') as f:
p = f.readlines()
page_num = int(input('输入页码:'))
1,1-5
2, 6-10
3, 11-15
4, 16-20
pages, mod = divmod(len(p), 5) # 商余函数,返回两个值
if mod: # mod不为零
pages += 1
if page_num > pages:
print('error')
elif page_num == pages and mod != 0:
for i in range(mod):
print(p[(page_num-1)5 + i].strip()) # 取消输出换行
else:
for i in range(5):
print(p[(page_num-1)5 + i].strip())
如下,每一个小字典的name对应股票名字,shares对应多少股,price对应股票的价格
portfolio = [
{'name': 'IBM', 'shares': 100, 'price': 91.1},
{'name': 'AAPL', 'shares': 50, 'price': 543.22},
{'name': 'FB', 'shares': 200, 'price': 21.09},
{'name': 'HPQ', 'shares': 35, 'price': 31.75},
{'name': 'YHOO', 'shares': 45, 'price': 16.35},
{'name': 'ACME', 'shares': 75, 'price': 115.65}
]
计算购买每只股票的的总价?
ret = map(lambda dic: {dic['name']: round(
dic['share']*dic['price'], 2)}, portfolio) # round 精确小数位
print(list(ret))
用filter()过滤出单价大于100的股票有哪些?
ret = filter(lambda dic: True if dic['price'] > 100 else False, portfolio)
ret = filter(lambda dic: dic['price'] > 100, portfolio)
print(ret)
###########################################################################################