zoukankan      html  css  js  c++  java
  • 【原创】展开二层嵌套列表(或pd.Series)的几种方法效率对比



    ★二层嵌套列表(或以列表为元素的pd.Series)有以下几种展开方式
    (1)列表生成式
    (2)用np.sum方法(将外层列表中各个子列表相加)
    (3)用sum方法(第二个参数传入一个空列表)
     
    ★但是谨记:对列表慎用sum方法!(以上3个方法只推荐使用第一个!!!)
     
    因为——对于列表,无论是sum方法还是np.sum方法,效率都特别低!
        直接用列表生成式,效率高很多!
     
    示例代码和结果如下:
    import numpy as np
    import pandas as pd
    import time
     
    sr = pd.Series([list('sdkajksdfdsaf') for _ in range(20000)])
    sr.head(5)
     
    >>>
    0    [s, d, k, a, j, k, s, d, f, d, s, a, f]
    1    [s, d, k, a, j, k, s, d, f, d, s, a, f]
    2    [s, d, k, a, j, k, s, d, f, d, s, a, f]
    3    [s, d, k, a, j, k, s, d, f, d, s, a, f]
    4    [s, d, k, a, j, k, s, d, f, d, s, a, f]
    dtype: object
    start = time.time()
    li1 = [i for k in sr for i in k]
    time1 = time.time()
    print('用生成式方法需要时间:', time1 - start)
     
    li2 = np.sum(sr)
    time2 = time.time()
    print('用np.sum方法需要时间:', time2 - time1)
     
    li3 = sum(sr, [])
    time3 = time.time()
    print('用sum方法需要时间:', time3 - time2)
     
    >>>
    用生成式方法需要时间: 0.009999990463256836
    用np.sum方法需要时间: 8.989910125732422
    用sum方法需要时间: 8.979910373687744
     
     
  • 相关阅读:
    CollectionView网格布局
    UICollectionView基础/UICollectionViewCell的四种创建方式
    shiro
    jquery添加属性的方法
    ssm+activiti+maven
    Activiti流程定义部署方式
    00--工作流
    04--activiti demo
    02--Activiti初始化表
    01--安装Activiti流程设计器eclipse插件
  • 原文地址:https://www.cnblogs.com/oceanicstar/p/10248763.html
Copyright © 2011-2022 走看看