废柴居士 发表于 2022-11-14 21:08:43

提示list index out of range怎么改

length_y,length_x=map(int,input().split())
lis=[]
for i in range(length_y):
    lis.append([])
    lis1=list(map(int,input().split()))
    lis.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==target:
            flag=1
            break
      elif lis<target:
            y+=1
      elif lis>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==target出错

jackz007 发表于 2022-11-14 21:39:12

x , y = map(int , input() . split())
d =
t = int(input())
for i in range(x) :
    if d >= t:
      break
r = False
if i < x:
    if t in d :
      r = True
      print(i + 1 , d . index(t) + 1)
if not r : print('NOT FOUND')
页: [1]
查看完整版本: 提示list index out of range怎么改