为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

呼如林 2024-01-15 15:32:23
所以我有一个数据文件,我想找到两件事:我给出的坐标是在区域内部还是外部,如果正确则返回将“1”的每个坐标放在其自己列表中的每一行中。这应该将其返回到字典中。该文件有以下内容:1 1 0 1 0 10 0 1 1 1 01 1 1 1 1 01 0 0 0 0 10 0 1 1 0 11 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)]}感谢所有帮助。
查看完整描述

1 回答

?
慕娘9325324

TA贡献1783条经验 获得超4个赞

对于第一部分,您有两个选择:


def cords(x, y):

    return x >= 0 and x < 6 and y >= 0 and y < 6

第一个选项对于 6x6 的区域大小是静态的,请注意,数组索引从 0 开始,因此 6 已经超出范围。


def cords(x, y, area):

    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):

    n = []

    for j,v in enumerate(row):

        if v == 1:

            n.append([i,j])

    d[i+1] = n


查看完整回答
反对 回复 2024-01-15
  • 1 回答
  • 0 关注
  • 191 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信