map()&zip()函数引发的案例&常见的python题

先来看一道题:

一行代码实现1+2+3+...+100。

方法一:

sum(range(1,101))

输出:5050

方法二:

import numpy as np
np.sum(np.arange(1,101)) #5050

 

再来看一道题:

一行代码实现由[1,2,3,4,5]生成[1,4,9,16,25]。

方法一:

list(map(lambda x:x**2,[1,2,3,4,5]))

输出:[1,4,9,16,25]

 

方法二:

import numpy as np 
print(list(np.square([1,2,3,4,5]))) #求平方 [1, 4, 9, 16, 25]
print(list(np.sqrt([1,4,9,16,25]))) #开根号 [1.0, 2.0, 3.0, 4.0, 5.0]
print([int(i) for i in list(np.sqrt([1,4,9,16,25]))]) #开跟取整 [1, 2, 3, 4, 5]

 

把类别变量转换为数字

import pandas as pd
data=pd.DataFrame(data={'老师':['','','','',''],
                       '付款':[1,1,1,0,0]},
                 index=['001','002','003','004','005'])
data['老师']=data['老师'].map({'':1,'':0})
data        

输出:

 

 扩展:

zip函数

map函数跟zip函数有时候容易搞混

zip(iterables,iterables,..) 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组;
 在 Python 3.x 中为了减少内存,zip() 返回的是一个zip对象。如需展示列表,需手动 list() 转换
 
用列表生成式遍历
X=['a','b','c','d']
Y=[1,2,3,4]
print([i for i in zip(X,Y)])

输出:[('a', 1), ('b', 2), ('c', 3), ('d', 4)]

 

生成可迭代对象和列表
X=['a','b','c','d']
Y=[1,2,3,4]
XY=zip(X,Y)
print(zip(X,Y))
print(list(XY))

输出:

<zip object at 0x11b799a08>

[('a', 1), ('b', 2), ('c', 3), ('d', 4)]

 

转为字典类型
dict(zip(X,Y))

输出:{'a': 1, 'b': 2, 'c': 3, 'd': 4}

 

for循环分别遍历相应位置
X=['a','b','c','d']
Y=[1,2,3,4]
for i,j in zip(X,Y):
    print(i,j)

输出:

 

 再来一道题:

输出列表求和[2,22,222,2222,...],列表的几位数由输入决定
a=int(input("请输入位数,只能输入数字"))
print("{}位数".format(a))
list_b=[]
for i in range(1,a+1):
    b=2
    b=str(b) #转化为字符串
    b=b*i
    list_b.append(b)
list_b=[int(i) for i in list_b]
print(list_b)
print(sum(list_b))

输入:

输出:

 

 

 

 

 

posted @ 2020-07-06 10:47  吕二口  阅读(270)  评论(0编辑  收藏  举报