为什么Python不会将重复列表迭代到一个列表中

时间:2014-09-14 14:29:37

标签: python-2.7

现在我正在研究Python 2.7,我有一点问题。

我解释说我需要获取列表的索引到另一个列表中:

students=[["A","B"],["A","B"]]

for m in students:
    if "A" in m and "B" in m:
        print m

当我运行此代码时,我得到了这个:

['A', 'B']
['A', 'B']

似乎是正确的,它会对学生进行迭代并打印两次['A','B']因为它重复了......但如果我运行此代码:

for m in students:
    if "A" in m and "B" in m:
        print students.index(m)

打印出来:

0
0

似乎它只迭代第一个元素,对我来说正确的输出应该是这样的:

0
1

有人能解释一下为什么Python会这样做,以及如何修复它,谢谢

1 个答案:

答案 0 :(得分:3)

students.index(m)返回第一个索引i,其中students[i]等于m

由于students包含两次相同的项目,因此两次都返回0。

因此循环遍历students中的两个项目,但是从student[0] == student[1]开始,当m绑定到students[1]时,students.index(student[1]))仍然返回0。


如果您只是想报告循环的当前索引,请使用enumerate

students = [["A","B"],["A","B"]]
for i, m in enumerate(students):
    if "A" in m and "B" in m:
        print i

打印

0
1