Skip to main content
 首页 » 编程设计

python之如果比较

2025年05月04日10小虾米

我是 python 的新手,我在理解它应该如何工作时遇到了一些麻烦。

假设我有一个这样的 for 循环:

for row in rows 
    if row["Title"] == List[row]  
         do something 

给我的错误是 list indicies must be integers。

如果我循环遍历每一行,如何将我所在的当前行表示为索引?

请您参考如下方法:

您应该了解一些重要的事情,根据您目前提供的代码示例,您可能做错了。

  1. 您正在尝试使用行中的元素作为索引。如果你期望这个 要成为一个整数,您可能需要将其转换(即,如果它是一个字符串 像“1”)。

  2. 除了第 1 点之外,您还两次使用行来处理两件不同的事情。另一个看起来像你期望它是一本字典。您可能会在更高范围内覆盖另一个行变量。请参阅底部的示例,因为我似乎无法在要点中很好地格式化...

  3. 如果 #Do Something 下面的代码操作行,这可能会导致灾难性的后果。例如,下面的代码是一个无限循环。

    对于 list1 中的元素: list1.append(元素 - 5)

    相反,您应该使用,它使用切片表示法制作 list1 的副本进行迭代,您可以修改未迭代的副本。:

    对于 list1[:] 中的元素: list1.append(元素 - 5)

  4. 您正在访问基于索引的不同列表,而不是对其进行迭代。你可以很容易地得到一个 IndexError 这样做。如果您想遍历两个列表,请这样做或使用 itertools相等的。这样您就安全了,但您确实需要确保列表的长度相同。

    对于 element1, element2, in zip(list1, list2): 通过

其他人告诉您使用枚举...而无需实际查看您的代码,这确实回答了您的问题,但这只是糖分和常见的 Python 习惯用法。这是它的工作原理。

help(enumerate) 
Help on class enumerate in module __builtin__: 
 
class enumerate(object) 
 |  enumerate(iterable[, start]) -> iterator for index, value of iterable 
 |   
 |  Return an enumerate object.  iterable must be another object that supports 
 |  iteration.  The enumerate object yields pairs containing a count (from 
 |  start, which defaults to zero) and a value yielded by the iterable argument. 
 |  enumerate is useful for obtaining an indexed list: 
 |      (0, seq[0]), (1, seq[1]), (2, seq[2]), ... 

我相信您可以想出其他方法来实现同样的目标。

上述第 2 点的示例。

In [71]: list1 
Out[71]: [1, 2, 3, 4, 5, -4, -3, -2, -1, 0] 
 
In [72]: x = 5 
 
In [73]: for x in list1: 
    ...:     pass 
 
In [74]: x 
Out[74]: 0