如何检查是否到达列表末尾?

8 投票
10 回答
64413 浏览
提问于 2025-04-17 03:43

假设你有一个列表,比如说 a=[1,2,3],现在你想检查一下 a[4] 这个位置的值是不是空的(null)。有没有办法做到这一点,而不使用异常处理或者断言呢?

10 个回答

3

这里有一个方法,是我在Code Fights的一个游戏挑战中用到的。

简单来说,列表的结束是通过以下方式来定义的:

  • 列表长度 - 当前索引(迭代次数) == 1


#!/usr/bin/python3

numbers = [1, 3, 5, 8, 10, 13, 16]

list_len = len(numbers)

for n in numbers:
    current_idx = numbers.index(n)
    print("Current Number:", numbers[current_idx])
    list_end = list_len - current_idx
    if list_end != 1:
        next_idx = current_idx + 1
        print("Next Number:   ", numbers[next_idx])
    else:
        print("End Of List!")
3

假设我们有一个列表 a = [1,2,3]

a[2:3] 的结果是 [3],这表示从索引2开始,到索引3(不包括3)结束,所以只取到3这个元素。

a[3:4] 的结果是 [ ],这表示从索引3开始,到索引4(不包括4)结束,但因为索引3没有元素,所以结果是空列表。

所以 a[i:i+1] != [ ] 这个意思是,如果这个表达式不等于空列表,就说明 ia 列表中的一个有效索引。

a[i:] 也是类似的功能,但 a[i:] 会生成一个新的列表,这个列表可能会很长,而 a[i:i+1] 如果不为空的话,只会包含一个元素。

9

len 可以告诉你列表的长度。根据文档的说法:

len(s)
    返回一个对象的长度(项目数量)。参数可以是一个序列
(字符串、元组或列表)或一个映射(字典)。

当然,如果你想获取一个 listtuplestring 的最后一个元素,由于索引是从0开始的,而长度是元素的数量,所以你可以用 a[len(a)-1] 来获取最后一个项目。


顺便提一下,通常访问一个支持数字索引的对象(比如字符串、列表、元组等)最后一个元素的正确方法是使用 a[-1]。显然,这种方法不需要用到 len

撰写回答