【问题标题】:How do I get an indexed result list in an enumerated for loop如何在枚举的 for 循环中获取索引结果列表
【发布时间】:2019-06-17 18:49:21
【问题描述】:

我正在尝试调用spice.str2et(n[i]) 获取日期列表(称为UTC,我从excel 导入)。我可以得到spice.str2et(n[i]),但每次循环它都会替换之前计算的时间。相反,我需要将所有spice.str2et(n[i]) 结果放在索引列表中。 (我也是 Python/编码的新手,刚开始 3 周前。)

我尝试在 et = 中的 et 之后添加 [i]。我还在这里查看了如何从枚举列表中获取索引,但它们都描述了如何从原始列表中获取索引。我正在寻找一个新的索引列表。

import spiceypy as spice

n = UTC.iloc[:,0] 

for i, txt in enumerate(n):

    et = spice.str2et(n[i]) #calculates ephermis time for utc, 
    print(et)

然后这给了我我想要的所有 ET 的列表,因为它每次循环时都会覆盖(当你打印不缩进时,它只会给出最后一个值)。

【问题讨论】:

  • 看起来你可能只想要一个列表理解。类似newList = [spice.str2et(txt) for txt in n]
  • 99.99% 的用户不知道 ephemeris time (ET) 是什么,因此请编辑问题的链接来解释它。底线是,(如何/)计算它与任何其他类型的时间不同?请不要指望每个用户都会自己去谷歌。但是,如果您只是说“我正在尝试在日期时间列表上调用spice.str2et()”,那么就直接这么说,我们甚至根本不需要提及星历时间。此外,import spice 也不见了。
  • 欢迎您。仅供参考,这个包甚至没有被称为香料,它是别的东西(当我搜索 Anaconda 和 pip 试图安装一个不存在的包“香料”来重现你的问题时,我不能)。所以要求代码为MCVE。在发布之前,请在干净的 shell 中重新运行您的代码 sn-p 以确保所有内容都已定义、导入等。谢谢。
  • UTC 是一个 pandas 数据帧,因此最好将对 spice.str2et() 的调用广播到整个第 0 列,这样性能更高。 ets = UTC.iloc[:,0].apply(spice.str2et)。无需对列n = UTC.iloc[:,0] 进行切片临时副本,这只会泄漏内存。

标签: python list


【解决方案1】:

看起来您可能只想要一个列表理解。比如:

n = UTC.iloc[:,0] 
newList = [spice.str2et(txt) for txt in n]

【讨论】:

    【解决方案2】:
    ets = UTC.iloc[:, 0].apply(spice.str2et)
    

    说明:UTC 是一个 pandas 数据帧,因此最好将对 spice.str2et() 的调用广播到整个第 0 列,这比手动迭代(或 .iterrows(),应该也可以避免)。

    【讨论】:

      【解决方案3】:

      这就是你要找的吗?

      n = UTC.iloc[:,0] 
      ets = []
      
      for i, txt in enumerate(n):
      
          et = spice.str2et(n[i]) #calculates ephermis time for utc, 
          ets.append(et)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-06-10
        • 2016-02-11
        • 1970-01-01
        • 1970-01-01
        • 2019-06-26
        • 1970-01-01
        • 2011-09-06
        相关资源
        最近更新 更多