如何检查列表是否已到达?

时间:2011-10-05 13:53:00

标签: python list

如果有一个列表,比如a=[1,2,3],我希望看到if a[4] is null,有没有办法做到这一点,而不使用异常或断言?

10 个答案:

答案 0 :(得分:8)

len会告诉您列表的长度。引用文档:

  

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

当然,如果您想在listtuplestring中获取最终元素,因为索引是基于0的,并且项的长度是元素count,a[len(a)-1]将是最后一项。


顺便说一下,通常,访问允许数字索引(str,list,tuple等)的对象中的最后一个元素的正确方法是使用a[-1]。显然,这不涉及len

答案 1 :(得分:2)

使用len

if len(a) <= index:
   ...

注意:您的问题会询问您如何找出“如果a[4]为空”。 a[4]不是什么,这就是为什么当你尝试检查它时会得到IndexError

答案 2 :(得分:2)

在这种情况下,

a[4]会抛出IndexError异常,这与将索引4处的a的值与None进行比较的情况不同。您可以在列表中包含None的值,如果您要比较a的值,那么当您遇到None时,并不意味着找不到索引在列表中。例如:

>>> a=[1,None,2]
>>> a[1]==None
True
>>> a[3]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range

由于列表是连续的并且是顺序索引的,因此检查索引是否在列表中的正确方法是将其与列表的len()进行比较,但是根据应用程序,还有其他方法可以解决它,比如捕捉IndexError或迭代。

>>> for index, value in enumerate(a):
...     print index, value
... 
0 1
1 None
2 2

答案 3 :(得分:2)

您可以编写一个与dict.get()类似的函数用于词典:

def listget(list_, index, default=None):
    """Return the item for index if index is in the range of the list_,
    else default. If default is not given, it defaults to None, so that
    this method never raises an IndexError."""
    if index >= len(list_) or index < -len(list_):
        return default
    else:
        return list_[index]

使用示例:

>>> names = ["Mark","Frank","James"]
>>> listget(names, 2)
'James'
>>> listget(names,-3)
'Mark'
>>> listget(names,3) # returns None
>>> listget(names,4,0)
0

所以它总会返回一个值而你没有例外。

答案 4 :(得分:2)

这是我在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!")

答案 5 :(得分:1)

您没有提供特定的用例,但通常会针对列表使用len来查看列表中有多少元素。

if len(a) > 3:
    # Do something

答案 6 :(得分:1)

检查您当前是否正在查看列表末尾的元素(使用任何语言)的一般方法是将您正在查看的当前索引与列表长度减去1进行比较(因为索引)从0开始。

a[4]实际上并不是什么,因为它不存在 - 某些语言可能会将其实现为null(或未定义),但是如果您尝试访问它,很多语言只会抛出异常。

答案 7 :(得分:1)

a = [1,2,3]

a [2:3] [3]

a [3:4] []

所以 a [i:i + 1]!= [] 告诉我是否是 a 的索引

a [i:] 也是如此,但 a [i:] 创建了另一个列表,可能很长,而 a [i:i + 1] 是1个元素,如果不是空的

答案 8 :(得分:0)

这是我用来检查列表末尾是否已到达的逻辑语句:


<!-- With paddings: WON'T WORK IN ALL EMAIL CLIENTS! -->
<table>
    <tr>
        <!--use paddings-->
        <td style="padding: 10px 10px 10px 10px">
            <!--Content goes here-->
        </td>
    </tr>
</table>


<!-- Same result with borders. Same color of your background -->
<table>
    <tr>
        <!--use border same color of bg-->
        <td style="border: solid 10px #ffffff">
           <!--Content goes here-->
        </td>
    </tr>
</table>


<!-- Same result using empty td/tr. (A lot more html than borders, get messy on large emails) -->
<table>
    <tr>
        <td colspan="3" height="10" style="height: 10px; line-height: 1px">&nbsp;</td>
    </tr>

    <tr>
        <td width="10" style="width: 10px; line-height: 1px">&nbsp;</td>
        <td>
           <!--Content goes here-->
        </td>
        <td width="10" style="width: 10px; line-height: 1px">&nbsp;</td>
    </tr>

    <tr>
        <td colspan="3" height="10" style="height: 10px; line-height: 1px">&nbsp;</td>
    </tr>
</table>

希望这有帮助! :)

答案 9 :(得分:0)

在这里查看: https://www.geeksforgeeks.org/python-how-to-get-the-last-element-of-list/

test_list = [1, 4, 5, 6, 3, 5] 
# printing original list  
print ("The original list is : " + str(test_list)) 
# First naive method 
# using loop method to print last element  
for i in range(0, len(test_list)): 
    if i == (len(test_list)-1): 
        print ("The last element of list using loop : "+  str(test_list[i])) 
# Second naive method         
# using reverse method to print last element 
test_list.reverse() `enter code here`
print("The last element of list using reverse : "+  str(test_list[0]))