gpt4 book ai didi

python - 遍历行时记住上一行

转载 作者:太空宇宙 更新时间:2023-11-04 08:33:36 30 4
gpt4 key购买 nike

假设我有一个大型 CSV 文件,其中包含有关在给定日期和时间是否下雨的数据。一个玩具示例如下。

Day, Time, Rain
1, 0800, 1
1, 0818, 0
1, 0842, 1
1, 0900, 0
2, 0800, 0
2, 0822, 1
2, 0845, 1
2, 0900, 1

我希望编写代码来计算一天中下雨的时间比例。我的计算方法如下(从当天的第二次观察开始):

  1. 如果在该观察和上一次观察之间没有下雨,则整个期间算作下雨。
  2. 如果在这次观察和之前的观察之间下雨,那么整个期间都算作下雨
  3. 如果恰好有一次观测和之前的观测在下雨,则有一半时间计为下雨。

例如,第 1 天下了 30 分钟的雨(0800 到 0818 的一半,0818 到 0842 的一半,0842 和 0900 的一半)。第 2 天下了 49 分钟的雨(从 0800 到 0822 的一半时间,以及从 0822 到 0900 的雨)。

如何在 Python 中快速完成此操作?我知道 for line in file: 遍历每一行,但不存储前一行的内存。

最佳答案

我会维护一个变量来保存看到的最后一行并在每次迭代时更新它:

last_line = None
for line in lines:

# You need to change this to explicitly check against None if line can be empty
if not last_line:
# Handle no last line on the first iteration

# Use line and last_line

# Update the last line seen
last_line = line

您还可以在开始时将 last_line 默认为有效值,这样就无需在循环中检查它。但这并不总是可行的。

可以想象,还有更复杂的方法,例如使用自身版本压缩 ,其中每个元素都偏移一个,但这可能要简单得多。

关于python - 遍历行时记住上一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51033514/

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