IndexError: list index out of range

今天在码Python代码时遇到了一个很有意思的问题:索引溢出。

原代码:

# 2行4列的二维数组
lst = [[True, True, True, True], [True, False, False, False]]
print(lst[1][0])  # True,输出第2行第1列的元素

start_row = 2  # 当前行
rows = 2  # 需要增加的行
for i in range(start_row, start_row + rows):
    if lst[i] is None:
        lst[i] = [False, False, False, False]
print(lst)

"""
按照我的思路,代码执行完后,应该输出
[[True, True, True, True], 
[True, False, False, False],
[False, False, False, False],
[False, False, False, False]]

但事与愿违,代码报错:IndexError: list index out of range
"""

原因分析:

"""
上段代码中的第7行:lst[i]
在Python中使用索引获取列表元素时,若索引超过len(list),底层就会报错IndexError

这段代码的思路是我之前封装form表单时使用的。在JavaScript中使用索引获取数组元素时,
若索引超过list.length,则返回null,这段代码可以完美运行
"""

问题解决:

"""
方法1: try:...except:...
"""

# 2行4列的二维数组
lst = [[True, True, True, True], [True, False, False, False]]
print(lst[1][0])  # True,输出第2行第1列的元素

start_row = 2  # 当前行
rows = 2  # 需要增加的行
for i in range(start_row, start_row + rows):
    try:
        if lst[i] is None:
            lst[i] = [False, False, False, False]
    except IndexError:
        lst.insert(i, [False, False, False, False])
print(lst)


"""
方法2: 先判断是否超出,再获取元素
"""

# 2行4列的二维数组
lst = [[True, True, True, True], [True, False, False, False]]
print(lst[1][0])  # True,输出第2行第1列的元素

start_row = 2  # 当前行
rows = 2  # 需要增加的行
for i in range(start_row, start_row + rows):
    if i >= len(lst):
        lst.insert(i, [False, False, False, False])
print(lst)

结语:

感觉还是Js那种直接一点,还有没有其他方法可以避免IndexError,欢迎交流。

顺便吐槽一下,两种语言在同一问题上进行了不同的处理,全是坑,哈哈。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值