【问题标题】:Stop if statement without breaking for loop and affect other ifs停止 if 语句而不中断 for 循环并影响其他 if
【发布时间】:2016-02-14 10:58:34
【问题描述】:

我正在使用 python 处理一些 .csv 文件。在 .csv 文件中,有很多行。有多个相同的行。 打开此文件后,在for row in reader: 循环中,我想找到第一个重复的行并将其分配给一个变量。然后继续处理循环中的其他行。

问题是当它遇到另一个相同的行时不中断循环,if 语句将再次运行。我只希望 if 语句在找到第一个想要的行时运行一次。这将导致冗余运行 if 语句多次,而一次就足够了。

如何仅在第一次满足 if 条件时才运行此 if 语句?我可以在找到第一个想要的行时打破循环,然后重复 for row in reader: 来处理其他行,但我认为必须有一种方法可以在单个循环中执行此操作。

【问题讨论】:

  • 跟踪是否是第一次。
  • 请不要贬低这个问题。为了这个问题,我在网上做了很多搜索。但弹出的大多数问题都是关于如何打破循环。这个问题将为新手的类似问题提供未来参考。

标签: python loops csv if-statement for-loop


【解决方案1】:

这是编程中的常见模式。首次满足条件后设置标志。如果您的标志已设置,则忽略该条件。

already_set = False
row_variable = None
for row in reader:
    if (row meets some condition) and (not already_set):
        row_variable = row
        already_Set = True
# now row_variable holds the first row that met your condition
# or it holds None if no rows meet the condition

【讨论】:

  • 使用这种格式,你甚至可以通过not row_variable来减少变量,因为None断言False
【解决方案2】:

您可以只使用一个布尔值来表示您是否已经处理了匹配的行,并在您的if 语句中进行额外检查。

found = False
for r in rows:
    if ( r == "whatever conidition for the row" and not found):
        found = True
        # processing code

【讨论】:

    猜你喜欢
    • 2015-09-07
    • 1970-01-01
    • 2017-04-25
    • 1970-01-01
    • 1970-01-01
    • 2014-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多