1、用map来处理字符串列表,把列表中所有人都变成sb,比方alex_sb,name = ['alex', 'wupeiqi', 'yuanhao', 'nezha']。
答案(每一步的代码均可以作为最终答案):
第一步:
name = ['alex', 'wupeiqi', 'yuanhao', 'nezha']
def func(item):
return item+'_sb'
ret = map(func,name) # ret是迭代器
print(list(ret))
第二步:
name = ['alex', 'wupeiqi', 'yuanhao', 'nezha']
ret = map(lambda item:item+'_sb',name) # ret是迭代器
print(list(ret))
第三步:
name = ['alex', 'wupeiqi', 'yuanhao', 'nezha']
print(list(map(lambda item:item+'_sb',name)))
运行结果:
['alex_sb', 'wupeiqi_sb', 'yuanhao_sb', 'nezha_sb']
2、用filter函数处理数字列表,将列表中的所有的偶数筛选出来,num = [1, 3, 5, 6, 7, 8]。
答案(每一步的代码均可以作为最终答案:
第一步:
num = [1, 3, 5, 6, 7, 8]
def func(item):
return item % 2 == 0
ret = filter(func,num) # ret是迭代器
print(list(ret))
第二步:
num = [1, 3, 5, 6, 7, 8]
ret = filter(lambda item:item % 2 == 0,num) # ret是迭代器
print(list(ret))
第三步:
num = [1, 3, 5, 6, 7, 8]
print(list(filter(lambda item:item % 2 == 0,num)))
运行结果:
[6, 8]
延伸:
第一步:
num = [1, 3, 5, 6, 7, 8]
def func(item):
if item % 2 == 0:
return True
ret = filter(func,num) # ret是迭代器
print(list(ret))
第二步:
num = [1, 3, 5, 6, 7, 8]
ret = filter(lambda item:True if item % 2 == 0 else False,num) # ret是迭代器
print(list(ret))
第三步:
num = [1, 3, 5, 6, 7, 8]
print(list(filter(lambda item:True if item % 2 == 0 else False,num)))
运行结果:
[6, 8]
3、随意些一个20行以上的文件,运行程序,先将内容读到内存中,用列表存储,接收用户输入页码,每页5条,仅输出当页的内容。
答案:
文件“file.txt”的内容如下:
1 Savion,男
2 Anthony,男
3 Tim,男
4 Lan,男
5 Kim,男
6 Before,男
7 Troy,男
8 Scott,男
9 Jonas,男
10 Bernie,男
11 Dennis,男
12 Jacky,男
13 Vicky,女
14 Blake,男
15 Jenson,男
16 Cody,男
17 Alan,男
18 Monica,女
19 Kevin,男
20 Macy,女
21 Sarah,女
22 Delia,女
23 Rocco,男
with open('file.txt', encoding = 'utf-8') as f:
l = f.readlines()
while 1:
page_num = input('请输入页码:')
if page_num.upper() == 'Q':
print('结束输入!')
break
page_num = int(page_num)
pages,mod = divmod(len(l),5) # 求有多少页,有没有剩余的行数
if mod: # 如果有剩余的行数,那么页数加1
pages += 1 # 一共多少页
if page_num > pages or page_num <= 0: # 用户输入的额页数大于总数或者小于等于0
print('输入有误!')
elif page_num == pages and mod != 0: # 如果用户输入的页码是最后一页,且之前有过剩余行数
for i in range(mod):
print(l[(page_num - 1) * 5 + i].strip()) # 只输出这一页上剩余的行
else:
for i in range(5):
print(l[(page_num - 1) * 5 + i].strip()) # 输出5行
运行结果:
请输入页码:1
1 Savion,男
2 Anthony,男
3 Tim,男
4 Lan,男
5 Kim,男
请输入页码:2
6 Before,男
7 Troy,男
8 Scott,男
9 Jonas,男
10 Bernie,男
请输入页码:3
11 Dennis,男
12 Jacky,男
13 Vicky,女
14 Blake,男
15 Jenson,男
请输入页码:4
16 Cody,男
17 Alan,男
18 Monica,女
19 Kevin,男
20 Macy,女
请输入页码:5
21 Sarah,女
22 Delia,女
23 Rocco,男
请输入页码:6
输入有误!
请输入页码:0
输入有误!
请输入页码:q
结束输入!
4、如下,每个小字典的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},
]
1)计算购买美指股票的总价并输出;
2)用filter过滤出单价大于100的股票并输出。
答案:
1)
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']:dic['shares'] * dic['price']},portfolio)
print(list(ret))
运行结果:
[{'IBM': 9110.0}, {'AAPL': 27161.0}, {'FB': 4218.0}, {'HPQ': 1111.25}, {'YHOO': 735.7500000000001}, {'ACME': 8673.75}]
2)
实现一:
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 = filter(lambda dic:True if dic['price'] > 100 else False,portfolio)
print(list(ret))
运行结果:
[{'name': 'AAPL', 'shares': 50, 'price': 543.22}, {'name': 'ACME', 'shares': 75, 'price': 115.65}]
实现二:
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 = filter(lambda dic:dic['price'] > 100,portfolio)
print(list(ret))
运行结果:
[{'name': 'AAPL', 'shares': 50, 'price': 543.22}, {'name': 'ACME', 'shares': 75, 'price': 115.65}]
网友评论