在Python中按索引遍历列表

时间:2019-01-03 08:51:52

标签: python for-loop foreach

如何从以下代码中获取整数,以便可以将其与其他整数进行比较?

unseenWords = ["Cat", "Geography", "Mouse", "Apocalypse", "Hierarchy", "Opaque", "Holocaust"]

for i in unseenWords:
     print(unseenWords)

我尝试使用len替换以下内容:

unseenWords.__len__()

但是那是我在这个标题中得到erorr的时候。我已经很习惯Java代码了,所以我期望我总是一个整数,但是在Python中似乎不是这样,因为当我尝试纯粹打印出“ i”时,它会返回实际的单词? / p>

因此,当我打印看不见的单词时,我将其格式设置为:

['Cat', 'Geography', 'Mouse', 'Apocalypse', 'Hierarchy', 'Opaque', 'Holocaust']
['Cat', 'Geography', 'Mouse', 'Apocalypse', 'Hierarchy', 'Opaque', 'Holocaust']
['Cat', 'Geography', 'Mouse', 'Apocalypse', 'Hierarchy', 'Opaque', 'Holocaust']
['Cat', 'Geography', 'Mouse', 'Apocalypse', 'Hierarchy', 'Opaque', 'Holocaust']
['Cat', 'Geography', 'Mouse', 'Apocalypse', 'Hierarchy', 'Opaque', 'Holocaust']
['Cat', 'Geography', 'Mouse', 'Apocalypse', 'Hierarchy', 'Opaque', 'Holocaust']
['Cat', 'Geography', 'Mouse', 'Apocalypse', 'Hierarchy', 'Opaque', 'Holocaust']

打印出索引后,我将其格式化为:

print(i)

Cat
Geography
Mouse
Apocalypse
Hierarchy
Opaque
Holocaust

尽管我期望它更像是: 1个 2 3 4 5 6

但是如何获取当前索引号?

4 个答案:

答案 0 :(得分:1)

  

我非常习惯Java代码,所以我希望我始终是整数,但在Python中似乎并非如此,因为当我尝试纯粹尝试打印'i时,它会返回实际单词'?

好吧,python确实不是java,那么为什么还要期望它以相同的方式工作呢? The behaviour of python's for loop is documented,您应该阅读该文档,对吗?

  

我尝试使用len代替以下内容:unseenWords.__len__()

稍加OT:您不应直接调用“魔术方法”(它们仅是对运算符的支持-和类似运算符的功能-重载)。正确的方法是len(unseenWords)

  

但是那是我在这个标题中得到erorr

您不必费心张贴相关代码(您应该拥有),但是显然您做了类似的事情:

for i in `unseenWords.__len__()`:
    # ....

哪个当然会引发此错误-对整数进行迭代的意义是什么?这里再次doing at least the official tutorial would have solved your problem(注意,这是解释for循环之后的下一部分...)。

  

尽管我希望它更像是:1 2 3 4 5 6

与包括Java FWIW在内的绝大多数语言一样,python使用基于零的索引-但是range()也可以采用'start'参数,因此这并不是真正的问题。

答案 1 :(得分:0)

您正在执行for-each循环,而不是按索引进行迭代。

for i in unseenWords:    # for every item in the list unseenWord
    print(unseenWords)   # you print the actual list

这与Java中的for (String i : unseenWords)相同(如注释中@ChatterOne所述)。

如果要打印每个单词,则需要执行以下操作:

for i in unseenWords:
    print(i)

如果要打印每个单词的索引,则有几种不同的方法可以实现,其中一种方法如下:

for i in range(len(unseenWords)): # iterate on the range of the size
    print(i)

答案 2 :(得分:0)

for index, data in enumerate(unseenWords):
    print("index: "+str(index)+ " data:"+data )

我认为这可以解决您的问题。

答案 3 :(得分:0)

对代码进行一些修改,将为您提供所需的输出。请将以下代码与您的代码进行比较

unseenWords = ["Cat", "Geography", "Mouse", "Apocalypse", "Hierarchy", "Opaque", "Holocaust"]


for i in range(0,len(unseenWords),1):
   print(i)

会给您:

  

0 1 2 3 4 5 6

就像在Java中一样

for (int i=0; i<arrayLength; i++)
 System.out.println(i);

因为索引从

开始