在使用.index()时,尝试访问列表的第n个元素会产生ValueError

时间:2014-10-27 14:38:23

标签: python list

我想使用格式化功能打印2个这样的列表:

Planet | Distance from Sun
Mercury | 0.4 AU
Venus | 0.7 AU
Earth | 1.0 AU
Mars | 1.5 AU
Jupiter | 5.2 AU
Saturn | 9.5 AU
Uranus | 19.6 AU
Neptune | 30.0 AU

以下是代码:

planets = ["Planet", "Mercury", "Venus", "Earth", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune"]
distance = ["Distence from Sun", "0.4", "0.7", "1.0", "1.5", "5.2", "9.5", "19.6", "30.0"]

for i in range(len(planets)):
    print("{}|{}".format(planets.index(i), distance.index(i)))

1 个答案:

答案 0 :(得分:6)

.index()在列表中查找值,并返回列表中该值的第一个索引。如果它无法在列表中找到该值,则会引发ValueError,表示无法找到该值 - 例如:您在内容中没有0你的清单。我有一种感觉,你将它与planets[i]混淆,后者将从列表中获得第n个索引。

然而,更简单的方法是"结合"这两个列表,并打印出来的结果 - 你不需要保留你正在迭代的索引,只需迭代它们,例如:

for p, d in zip(planets, distance):
    print(p, '|', d)

在这种情况下,您可以避免使用.format,因为它无论如何都不符合您要求的输出:)


假设:

data = [1, 7, 5]

data中第3项的价值是多少?

print(data[2])
# 5

列表中第一个7的索引位置是什么?

print(data.index(7))
# 1

第二个位置的列表值是多少?

print(data[1])
# 7

列表中第一个100的位置是什么?

print(data.index(100))
# Traceback (most recent call last):
#   File "<pyshell#8>", line 1, in <module>
#     data.index(100)
# ValueError: 100 is not in list