猿问

给出坐标的位置参数并将它们聚集在一起

所以我有一个数据文件,我想找到两件事:

  1. 我给出的坐标是在区域内部还是外部,如果正确则返回

  2. 将“1”的每个坐标放在其自己列表中的每一行中。这应该将其返回到字典中。

该文件有以下内容:

1 1 0 1 0 1

0 0 1 1 1 0

1 1 1 1 1 0

1 0 0 0 0 1

0 0 1 1 0 1

1 0 0 0 0 1

我已将上述内容放入一个列表中,每个列表都包含代码:


lines = []

with open('area.dat', 'r') as a:

    for line in a:

        line = line.strip()

        if not line:

            continue

        lines.append(list(map(int, line.split())))

        data.extend(map(int, line.split()))



print(lines)

我尝试通过代码获取坐标以及它是在区域之外还是在区域之内(对于 x 和 y)


区域是列表的列表


x = int(input('enter x: '))

y = int(input('enter y: '))



def cords(x, y, area):

    if x > 6 or y > 6:

        print('Outside Area')

        return(False)

    else:

        print('Inside Area')

        return(True)

我想获取列表“区域”内的坐标 x 和 y 并返回它是否在其中。


因此,例如,如果我输入 cords(0,4,area) 它将返回“True”,如果我输入 cords(3,7,area) 它将返回“False”。


之后我想将它们按每行以 1 为一组放在一起。


例如,第 1 行和第 2 行将给出:


{1: [(0,4), (0,5)], 2: [(1,0), (1,1)]}


感谢所有帮助。


呼如林
浏览 183回答 1
1回答

慕娘9325324

对于第一部分,您有两个选择:def cords(x, y):&nbsp; &nbsp; return x >= 0 and x < 6 and y >= 0 and y < 6第一个选项对于 6x6 的区域大小是静态的,请注意,数组索引从 0 开始,因此 6 已经超出范围。def cords(x, y, area):&nbsp; &nbsp; return x >= 0 and x < len(area) and y >= 0 and y < len(area[0])第二个选项动态检查坐标是否在给定嵌套列表的范围内。您可能需要根据 x 和 y 是否与行和列相关来调整它,反之亦然。现在,对于第二部分,您正在创建一个包含冗余信息的字典,因为索引(示例中的 1 和 2)直接与第一个轴(示例中的 0 和 1)相关,您可能需要重新考虑您实际的内容想要在这里实现。d = {}for i,row in enumerate(lines):&nbsp; &nbsp; n = []&nbsp; &nbsp; for j,v in enumerate(row):&nbsp; &nbsp; &nbsp; &nbsp; if v == 1:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; n.append([i,j])&nbsp; &nbsp; d[i+1] = n
随时随地看视频慕课网APP

相关分类

Python
我要回答