首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >for if比较

for if比较
EN

Stack Overflow用户
提问于 2011-12-11 04:59:04
回答 4查看 102关注 0票数 1

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

假设我有一个for循环,如下所示:

代码语言:javascript
复制
for row in rows
    if row["Title"] == List[row] 
         do something

给我的错误是list indicies must be integers

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

EN

回答 4

Stack Overflow用户

发布于 2011-12-11 05:41:27

有一些重要的事情是你应该了解的,根据你到目前为止提供的代码样本,你可能做错了。

  1. 您正在尝试使用行中的元素作为索引。如果你期望它是一个整数,你可能需要转换它(即.如果它是一个字符串,比如‘1’)。
  2. 除了点1之外,你使用了两次row来做两件不同的事情。另一个看起来像是你在期待它是一本字典。您可能会在更高的作用域覆盖另一个行变量。参见底部的示例,因为我似乎不能很好地格式化项目符号...
  3. 如果#Do Something下面的代码操作行,这可能会导致灾难性的后果。例如,下面的代码是一个无限循环。

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

相反,您应该使用,这将使用切片表示法创建list1的副本以进行迭代,并且您可以修改未迭代的副本:

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

  • ,您正在访问一个基于索引的不同列表,并且您没有遍历它。你可以很容易地得到一个IndexError来做这件事。如果你想遍历两个列表,就像这样做,或者使用itertools等效项。这样您是安全的,但是您需要确保列表具有相同长度的。

对于element1,element2,压缩格式(list1,list2):传递

其他人告诉您使用枚举...在不实际查看代码的情况下,这确实回答了您的问题,但它只是一种糖和一个常见的Python惯用法。下面是它的工作原理。

代码语言:javascript
复制
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]), ...

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

上面第二点的例子。

代码语言:javascript
复制
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
票数 4
EN

Stack Overflow用户

发布于 2011-12-11 05:01:31

代码语言:javascript
复制
for i, row in enumerate(rows):
    # do something
票数 3
EN

Stack Overflow用户

发布于 2011-12-11 05:01:40

你可以enumerate()它:

代码语言:javascript
复制
for index, row in enumerate(rows):
  if row['Title'] == List[index]:
    # Do something
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8459824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档