gpt4 book ai didi

Python:仅在列表末尾删除重复值

转载 作者:太空宇宙 更新时间:2023-11-03 11:00:47 25 4
gpt4 key购买 nike

我有一个 python 列表,其中响应顺序很重要。我只想过滤掉出现在列表末尾的 nan 值。我想知道是否有一种有效的方法可以从如下列表中提取:

nan = float("nan")
responses = [1.0, nan, 9.0, nan, nan, nan, nan, nan, nan, nan, nan]

到没有任何尾随 nan 值的列表:

[1.0, nan, 9.0]

我知道如何使用列表理解过滤掉所有 nan 值:

import pandas as pd
[r for r in responses if pd.notnull(r)]
>>> [1.0, 9.0]

但是想不出一种直接的方法来过滤掉末尾的 nan 值而不将所有内容都转换为字符串并使用正则表达式。我可以这样做,但担心性能,这是一个问题,因为它将执行数十万次。

最佳答案

while responses and math.isnan(responses[-1]):
responses.pop()

更新:这不如直接切片快。

>>> timeit.timeit('responses = list(r)\nwhile responses and isnan(responses[-1]): responses.pop()', 'from math import isnan; nan = float("nan"); r = [1.0, nan, 9.0, nan, nan, nan, nan, nan, nan, nan, nan]')
1.3209394318982959
>>> timeit.timeit('responses = list(r)\nresponses = responses[:3]', 'from math import isnan; nan = float("nan"); r = [1.0, nan, 9.0, nan, nan, nan, nan, nan, nan, nan, nan]')
0.29652016144245863

关于Python:仅在列表末尾删除重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33022346/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com