鱼C论坛

 找回密码
 立即注册
查看: 2493|回复: 1

提示list index out of range怎么改

[复制链接]
发表于 2022-11-14 21:08:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
length_y,length_x=map(int,input().split())
lis=[]
for i in range(length_y):
    lis.append([])
    lis1=list(map(int,input().split()))
    lis[i].append(lis1)
target=int(input())
flag=0
y=0
x=length_x-1
while flag==0:
    if y<length_y and x<length_x:
        if lis[y][x]==target:
            flag=1
            break
        elif lis[y][x]<target:
            y+=1
        elif lis[y][x]>target:
            x-=1
if flag==1:
    print((x+1),(y+1))
elif flag==0:
    print('NOT FOUND')

题目
不重复二维有序列表的线性查找。现在需要高效地查找一个二维列表中的某一个元
素 target,其中,这个二维列表具有如下三个特点:(1)每一个列表的顺序是从小到
大;(2)将这些列表排成一个二维矩阵之后,同一列上的元素从上到下依次递增;(3)
所有元素不重复。例如一个如下的二维列表:
现在需要充分利用这个排序二维列表的“有序”这一特性,实现一次高效的查找。
注意到一定是可以通过【二维的循环】,实现一个【循环所有元素】的暴力查找的,但
是可以利用有序这个特点,【最多只遍历一行和一列元素】找到目标 target 或者判断该
元素不在列表中。请实现后面这个高效的算法。
输入:
输入共三部分,第一部分为一行,包括以空格分割的两个整数 length_y 和 length_x
(两个数字都保证大于 1),表示子列表的个数和每个子列表的长度;
第二部分有 length_y 行,每一行包括 length_x 个整数,每一行的列表元素用空格
7
分隔,所有第二部分的整数排列按照题目要求有序;
第三部分为一个整数,为待查找整数 target。
输出:
若这个整数在二维列表中,则输出以空格分隔的两个正整数,分别表示在第几行、
第几列找到了这个元素;
若这个整数不在此二维列表中,则输出”NOT FOUND”。
输入样例 1
3 4
1 2 3 4
5 6 7 8
10 11 12 15
11
输出样例 1
3 2
输入样例 2
3 4
1 2 3 4
5 6 7 8
10 11 12 15
9
输出样例 2
NOT FOUND

输入
3 4

1 2 3 4

5 6 7 8

10 11 12 15

11

显示lis[y][x]==target出错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-11-14 21:39:12 | 显示全部楼层
x , y = map(int , input() . split())
d = [list(map(int , input() . split())) for _ in range(x)]
t = int(input())
for i in range(x) : 
    if d[i][y - 1] >= t:
        break
r = False
if i < x:
    if t in d[i] :
        r = True
        print(i + 1 , d[i] . index(t) + 1)
if not r : print('NOT FOUND') 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-25 15:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表