索引越界错误,用于比较列表中的相邻数字

时间:2018-10-30 13:47:29

标签: python indexoutofboundsexception

列表项

  <!-- eviivo Availability Checker -->
<script type="text/javascript" src="http://securebooking.eviivo.com/yourwebsite.availabilitychecker.1.0.min.js"></script>
<script type="text/javascript">
eviivo.availabilitychecker.create('#availabilitychecker', {
 industryTypes: [1],
 allowCrossDomainTracking: true,
 template: 'horizontal'
});
</script>
<noscript><span class="eviivo_submit_noscript"><a href="http://securebooking.eviivo.com/mywebsite/yourwebsite.home" title="Book Online Now!">Check Availability</a></span><link rel="stylesheet" type="text/css" href="http://securebooking.eviivo.com/javascript/integration/eviivo.availabilitychecker.1.0.css" /></noscript>
<style type="text/css">
.eviivo_availabilitychecker {
 width:auto !important;
 height:auto !important;
 color:#333333 !important;
 background:#EEEEEE !important;
 border: 1px solid #DDDDDD !important;
 font-size:12px !important;
 font-family:Arial !important;
}
.eviivo_title span {
 color:#000000 !important;
 font-size:12px !important;
 font-family:Arial !important;
}
.eviivo_submit a {
 color:#FFFFFF !important;
 background:#F28226 !important;
 border: 1px solid #CCCCCC !important;
 font-size:12px !important;
 font-family:Arial !important;
}
</style>
<div id="availabilitychecker"></div>

我在if条件下获取索引超出范围的错误。有什么错误?我已经在条件中使用len

2 个答案:

答案 0 :(得分:1)

您的问题是i的值不是列表的索引,而是列表中正在迭代的实际项。

循环中的else语句也是不必要的,因为它不会改变任何内容。

我认为这可以满足您的需求:

count = 0
num_list = [1, 2, 3, 3, 2, 1, 1]

for i in range(len(num_list) - 1):
    if(num_list[i] == num_list[i + 1]):
        count += 1 

print(count)
# Output: 2

range(len(num_list) - 1)将遍历所有索引,列表中的最后一个除外。因此,无需执行if检查以确保它没有超出范围。

答案 1 :(得分:1)

for i in num_list:

不会在长度/范围上进行迭代,而是在值上进行迭代。 例如

num_list = [3,4,1,5,3]
for i in num_list:
    print(i)

将输出

3
4
1
5
3

相反,您要遍历索引,在这种情况下,您的foor循环应如下所示:

for i in range(len(num_list)):

以下代码

num_list = [3,4,1,5,3]
for i in num_list:
    print(i)

将输出

0
1
2
3
4