python数据分析——Python基础篇

本文基于Datawhale提供的资料学习总结而来,如有侵权,联系速删。

1.列表推导式与条件赋值

在生存数字序列的时候,我们可以通过如下的一般方法完成

L = []
def my_func(x):
    return 2*x
for i in range(5):
    L.append(my_func(i))

L
Out[4]: [0, 2, 4, 6, 8]

我们可以利用def定义一个函数,并通过for循环和append完成对数字序列L的写入。

我们也可以利用的[a  for  i  in  b]迭代方法,其中a为映射函数,i为要输入指代的内容,b表示为迭代的对象:

[my_func(i) for i in range(5)]
Out: [0, 2, 4, 6, 8]

 同时列表表达式也支持多层迭代,如下

[m+'_'+n for m in ['a', 'b'] for n in ['c', 'd']]
Out: ['a_c', 'a_d', 'b_c', 'b_d']

 同时我们也可以使用条件语句,使用if选择的条件赋值,形式为value=a if condition else b;

如果条件满足condition则value=a,如果不满足则value=b

我们可以列举如下例子在序列中,将列表中超过5的都用5来代替其余保持不变

L = [1, 2, 3, 4, 5, 6, 7]
[i if i <= 5 else 5 for i in L]
Out: [1, 2, 3, 4, 5, 5, 5]

 2.匿名函数与map方法

map是一种更为简洁的函数定义,具有更清晰简单的映射关系,而匿名函数便是使用map函数我们不需要像def呢样对函数进行命名,而是即写即用,在不重复调用的情况下使用起来极为方便和简洁。

我们可以将上述的my_func函数在迭代法的应用中使用map进行修改,得到如下

[(lambda x: 2*x)(i) for i in range(5)]
Out: [0, 2, 4, 6, 8]

 如果我们想要利用map函数来构建上述L的类似数字序列,我们可以使用list将其转化为列表:

list(map(lambda x: 2*x, range(5)))
Out: [0, 2, 4, 6, 8]

 同样的我们也可以对于多个输入值函数映射,可以通过最佳迭代对象实现:

list(map(lambda x, y: str(x)+'_'+y, range(5), list('abcde')))
Out: ['0_a', '1_b', '2_c', '3_d', '4_e']

 3. zip对象与enumerate方法

 zip函数能够把多个可迭代对象打包成一个元组构成的可迭代对象,对于处理大量数据非常有利,

我们再通过tuple,list(tuple与list都是有序列表,但是tuple初始化后不可修改,而list是可以修改的)得到相应的打包结果:

L1, L2, L3 = list('abc'), list('def'), list('hij')

list(zip(L1, L2, L3))
Out: [('a', 'd', 'h'), ('b', 'e', 'i'), ('c', 'f', 'j')]

tuple(zip(L1, L2, L3))
Out: (('a', 'd', 'h'), ('b', 'e', 'i'), ('c', 'f', 'j'))

对于上述代码中list的输出,我们可以利用*操作符和zip连用进行解压操作,使其输出对应原来的列表:

zipped = list(zip(L1, L2, L3))

zipped
Out: [('a', 'd', 'h'), ('b', 'e', 'i'), ('c', 'f', 'j')]

list(zip(*zipped)) 
Out: [('a', 'b', 'c'), ('d', 'e', 'f'), ('h', 'i', 'j')]

 zip函数的循环迭代:

for i, j, k in zip(L1, L2, L3):
    print(i, j, k)

a d h
b e i
c f j

enumerate是一种特殊的打包,可以在迭代时绑定迭代元素的遍历序号

L = list('abcd')

for index, value in enumerate(L):
    print(index, value)

0 a
1 b
2 c
3 d

同时我们也可以通过zip对象完成这个操作

for index, value in zip(range(len(L)), L):
    print(index, value)

0 a
1 b
2 c
3 d

 index是L的遍历序号,len便是返回对象长度或者项目个数

同时我们也可以利用zip对象建立字典映射

L1, L2 = list('abc'), list('def')
dict(zip(L1, L2))
Out: {'a': 'd', 'b': 'e', 'c': 'f'}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沈走天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值