我试图在列表中找到一个元素(字符串),然后打印索引。这是我的代码:
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",如何将索引保存到位?
答案 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)当你知道应该引发的特定异常时,尝试不使用一般异常,因为更复杂的代码会使得更难找到其他函数调用失败的其他问题。