Skip to main content
 首页 » 编程设计

python之遍历行时记住上一行

2025年05月04日21mayingbao

假设我有一个大型 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 默认为有效值,这样就无需在循环中检查它。但这并不总是可行的。

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