查找并打印列表中元素的索引(字符串)

时间:2014-07-08 09:53:07

标签: python

我试图在列表中找到一个元素(字符串),然后打印索引。这是我的代码:

def checkLen():
days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
position = 0
for i in days:
    if i == "Monday":
        position = i
        print("Found it")
        print(position)

但我得到了结果:

Found it
Monday

我发现,与我所知道的其他编程语言不同,Python变量类型可以改变,这就是数字类型"位置"更改为" str",如何将索引保存到位?

4 个答案:

答案 0 :(得分:3)

列表有一个可以使用的索引方法

def checkLen(): 
     days = ["Monday", "Tuesday", "Wednesday", "Thursday" "Friday", "Saturday", "Sunday"]
     try:
         position = days.index("Monday")
         print("Found it") 
     except ValueError:
         position = None # or 0 if you want
         print("Not present") 
     print(position)

答案 1 :(得分:1)

使用enumerate。它返回位置和项目:

def checkLen():
    days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
    for position, day in enumerate(days):
        if day == "Monday":
            print("Found it")
            print(position)

答案 2 :(得分:1)

 def checkLen():
    days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
    if "Monday" in days:
        print "found"
        print days.index("Monday")

你不需要循环这些日子。如果找到in

,请使用index

答案 3 :(得分:1)

列表有一个索引函数:

days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
print(days.index("Monday"))

请注意,如果项目不在列表中但是执行速度快于循环列表,则会引发异常,特别是如果您有长列表。

然而它只会给你第一个索引,所以如果有重复,你将不得不使用其他方法来找到它们。

良好的阅读资源是http://effbot.org/zone/python-list.htm

正如Frerich Raabe所指出的那样 在python中,大多数人倾向于编写代码来假设你正在寻找的东西是存在的(即列表中有你试图找到的元素)并且如果没有引发异常(引发异常是ValueError)

当你知道应该引发的特定异常时,尝试不使用一般异常,因为更复杂的代码会使得更难找到其他函数调用失败的其他问题。