pyhon列表生成器用法汇总

在很多数据处理过程中,经常会见到列表生成器,因为它语法简单,很多复杂操作仅仅一行代码就搞定。

一 基本语法

基本语法: [表达式  for x in list]

a = [x for x in range(1,5)]

a
Out[112]: [1, 2, 3, 4]

二 条件分支

基本语法: [表达式 for x in list  if 条件]

a = [x+3 for x in range(1,5) if x>2]

a
Out[116]: [6, 7]

 三 else

基本语法: [表达式1  if 条件  else 表达式2  for x in list]

#如果大于2,则加3,否则加20
a = [x+3  if x>2 else x+20 for x in range(1,5)]

a
Out[118]: [21, 22, 6, 7]

四 其他

既然有列表解析,那么有没有元组解析式,字典解析式呢?答案是有的,下面介绍元组解析式(只需要把”[]“变“()”就好)

a = (x**2 for x in range(1,5))

a
Out[120]: <generator object <genexpr> at 0x000002098F06CCC8>

next(a)
Out[121]: 1

next(a)
Out[122]: 4

这里使用了next()函数进行输出

五 高级用法

尝试列表解析式用于数据补齐,在数据挖掘或者其他上游任务中,会遇到数据缺失或者维度变换等等问题,那如何使用python列表解析式进行数据补齐呢?见下面这个例子,对s_list 第二行进行补齐,2行命令就实现了

第一条,取每行数据的最大长度

第二条,进行填0补齐

s_list
Out[127]: [[1, 2, 3, 4, 5], [4, 5]]

max_len = max(len(i) for i in s_list)

a_list = [s+[0]*(max_len-len(s))  if max_len >len(s) else s[:max_len] for s in s_list]

a_list
Out[129]: [[1, 2, 3, 4, 5], [4, 5, 0, 0, 0]]

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值