【问题标题】:A more streamline, efficient way to split a list一种更精简、更高效的列表拆分方式
【发布时间】:2019-06-09 08:00:02
【问题描述】:

有没有更快、更有效的方法来拆分列表中的行。我当前的设置并不慢,但拆分整个列表所需的时间确实比我想象的要长,这可能是由于遍历整个列表需要多少次迭代。

我目前有下面的代码

found_reader = pd.read_csv(file, delimiter='\n', engine='c')
loaded_list = found_reader    
for i in range(len(loaded_list)):
            loaded_email_list = loaded_email_list + [loaded_list[i].split(':')[0]]

我只是想要一种在最快但最有效的时间内完成上述工作的方法

【问题讨论】:

    标签: python python-3.x split


    【解决方案1】:

    如果loaded_listloaded_email_list 都是常规列表(可能需要对 Pandas 使用的任何内容稍作调整),您可以这样做:

    loaded_email_list += [x.partition(':')[0] for x in loaded_list]
    

    为什么这样更好:

    • 它直接遍历列表,而不是使用rangelen 和索引变量
    • 它使用partition,它不再关注第一个:,而不是split,它遍历整个字符串
    • 它使用列表推导式一次性创建新列表,而不是创建和连接一堆单元素列表
    • 它使用x += y,而不是x = x + y,如果它的__iadd__ 比将它的__add__ 结果分配给它自己更有效,那么理论上它可能更快。

    【讨论】:

    • 非常感谢。有趣的是,我用这个解决了它-loaded_email_list = [row.split(':', 1)[0] for row in loaded_list]。但我读过你所说的使用分区而不是拆分,这是有道理的。
    猜你喜欢
    • 1970-01-01
    • 2015-11-03
    • 2019-11-22
    • 1970-01-01
    • 1970-01-01
    • 2021-05-01
    • 1970-01-01
    • 2020-01-25
    • 1970-01-01
    相关资源
    最近更新 更多