Python在列表中循环获取列表索引错误

Python在列表中循环获取列表索引错误,python,python-2.7,Python,Python 2.7,我有一个列表,希望遍历每一行并打印第1列中的值。我收到错误消息TypeError:list索引必须是整数,而不是list我在这里缺少什么 test = [[1,2,4],[3,4,3]] for currentrow in test: print test[currentrow][1] 在您的示例中,currentrow将是一个列表 所以你想做的是 test = [[1,2,4],[3,4,3]] for currentrow in test: print current

我有一个列表,希望遍历每一行并打印第1列中的值。我收到错误消息
TypeError:list索引必须是整数,而不是list
我在这里缺少什么

test = [[1,2,4],[3,4,3]]

for currentrow in test:
     print test[currentrow][1]

在您的示例中,
currentrow
将是一个列表

所以你想做的是

test = [[1,2,4],[3,4,3]]

for currentrow in test:
    print currentrow[1]
将打印

2
4

在您的示例中,
currentrow
将是一个列表

所以你想做的是

test = [[1,2,4],[3,4,3]]

for currentrow in test:
    print currentrow[1]
将打印

2
4

这里代码的问题是,当您在
测试列表中循环时,每个条目都是自己的列表。因此,您试图将该条目用作索引,这是不可能的。试着这样做:

for i in range(len(test)):
    print test[i][1]

这里代码的问题是,当您在
测试列表中循环时,每个条目都是自己的列表。因此,您试图将该条目用作索引,这是不可能的。试着这样做:

for i in range(len(test)):
    print test[i][1]

在Python中使用for循环时,变量
currentrow
将分配给列表中的实际对象,而不是索引。因此,您需要的是以下内容:

test = [[1,2,4],[3,4,3]]

for currentrow in test:
     print currentrow[1]
这种方法的一个好处是它也更容易阅读

如果希望索引在循环体中可用,可以使用
enumerate
。下面是一个例子:

test = [[1,2,4],[3,4,3]]

for i, currentrow in enumerate(test):
    print "Row {}: {}".format(i, currentrow[1])

在Python中使用for循环时,变量
currentrow
将分配给列表中的实际对象,而不是索引。因此,您需要的是以下内容:

test = [[1,2,4],[3,4,3]]

for currentrow in test:
     print currentrow[1]
这种方法的一个好处是它也更容易阅读

如果希望索引在循环体中可用,可以使用
enumerate
。下面是一个例子:

test = [[1,2,4],[3,4,3]]

for i, currentrow in enumerate(test):
    print "Row {}: {}".format(i, currentrow[1])

如果您试图访问测试中每个阵列中的第二个元素,请执行以下操作:

test = [[1,2,4],[3,4,3]]

for currentrow in test:
    print currentrow[1]

如果您试图访问测试中每个阵列中的第二个元素,请执行以下操作:

test = [[1,2,4],[3,4,3]]

for currentrow in test:
    print currentrow[1]

什么使你认为
currentrow
是索引?什么使你认为
currentrow
是索引?如果你想使用索引,建议使用
enumerate
而不是
range(len(x))
构造。所以
对于枚举(test)中的i,lst
哦,我没有意识到这一点。原因是什么?这是因为
for
在python中的工作方式。在其他语言中,它总是有点像
foreach
:它总是在迭代器上迭代。
range()
创建值[1,2,3,…,n]的新列表(在2.x中,生成器在3.x中),然后对该列表进行迭代。另一个原因是使用
enumerate
,它更具可读性和“更具pythonic”。如果您更感兴趣,这是一块好手表。@user2242044它会给出什么错误?我已经在Python交互控制台上快速试用过了,它似乎可以正常工作。@Hamatti感谢您的链接。我把
enumerate
看作是一个更抽象的版本,我应该使用它,因为它也是内置的。“不要重新发明轮子”,对吧?如果你想使用索引,建议使用
enumerate
而不是
range(len(x))
construct。所以
对于枚举(test)中的i,lst
哦,我没有意识到这一点。原因是什么?这是因为
for
在python中的工作方式。在其他语言中,它总是有点像
foreach
:它总是在迭代器上迭代。
range()
创建值[1,2,3,…,n]的新列表(在2.x中,生成器在3.x中),然后对该列表进行迭代。另一个原因是使用
enumerate
,它更具可读性和“更具pythonic”。如果您更感兴趣,这是一块好手表。@user2242044它会给出什么错误?我已经在Python交互控制台上快速试用过了,它似乎可以正常工作。@Hamatti感谢您的链接。我把
enumerate
看作是一个更抽象的版本,我应该使用它,因为它也是内置的。“不要重新发明轮子”,对吗?