1. 程式人生 > >python筆記(內建函式1)

python筆記(內建函式1)

1.帶key的內建函式有:max,min,filter,map,sorted
例:max([1,2,-3,4,5],key = abs)
2.map的用法。
name = [‘pu’,‘hu’,‘yu’,‘ru’]
def func(item):
return item + ‘sb’
ret = map(func,name)
print(ret)
# ||
# ||
ret = map(lambda item:item+’_sb’,name)
print(list(ret))

3.filter的用法

num = [1,2,3,4,5,6,7]
ret = filter(lambda item:item%2 == 0,num)
print(list(ret))

4.作業:
(1)隨意寫一個2行以上的檔案,執行程式,先將內容讀到記憶體中,用列表儲存,接收使用者輸入頁碼,每頁5條僅輸當前頁的內容。

with open('file',encoding='utf-8') as f:
    l = f.readlines()
page_num = int(input('請輸入頁碼:'))
pages,mod = divmod(len(l),5)
if mod:
    pages += 1
if page_num > pages:
    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())

(2)冒泡演算法
s = [10,9,8,7,6,5,4,3,2,1,1,2,3,4,5]
l = len(s)
for i in range(1,l):
for j in range(l - i):
if s[j] > s[j + 1]:
temp = s[j]
s[j] = s[j + 1]
s[j + 1] = temp

print(s)

(3)
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.計算購買每隻股票的總價

ret = map(lambda dic:{dic['name']:round(dic['shares']*dic['price'],3)},portfolio)
print(list(ret))

2.用filter過濾出單價大於100的股票有哪些

ret = filter(lambda dic:dic['price'] > 100,portfolio)
print(list(ret))

5.上次作業
員工資訊表:接收使用者資訊分析資訊。

dic = {'name':1,'id':0,'age':2,'phone':3,'job':4}
def filter(condition):
    condition = condition.strip()
    if '>' in condition:
        col,val = condition.split('>')
        print(col,val)
        g = get_line('inform.txt')
        for line_list in g:
                if int(line_list[dic[col]]) > int(val):
                    # print(line_list)
                    yield line_list

def views(view_lst,staff_g):
   '''展示符合條件的員工資訊'''
   for i in g:
       print(i)

def get_line(file_name):
    with open(file_name,encoding='utf-8') as f:
        for line in f:
            line = line.strip().split(',')
            yield line

#ret = input('>>>')
ret = 'select name,age where age>22'
view,condition = ret.split('where')
view = view.replace('select','').strip()
view_list = view.split(',')
g = filter(condition)
views(view_list,g)