繁体   English   中英

在 Python 中的列表列表中搜索/查找

[英]Search/Find within a List of Lists in Python

我有一个列表列表,我正在尝试在列表中搜索或寻址数据。

例如

print(data[0])
print(data[12])

给我

['Spinward-Rimward', 'Sol', 0, 0, 'N/A', '']
['Spinward-Rimward', 'POL-6387', 2, -8, 'TWE', 'Atol']

print(data[0][0])

给我

Spinward-Rimward

我可以得到一个单独的项目

index = data[0].index('Sol')
print(index)

得到我

1

但是在列表列表中搜索让我感到难以置信。 我有几百行数据,如果我想要包含 Spinward-Rimward 的每一行或纬度和经度小于 10 的每一行,我很难过。

我需要这个,因为我计划在人们输入恒星系统的名称以查找两颗恒星之间的距离时在纬度/经度上运行算术运算。

tl;博士 - 我是一个 python 菜鸟,他处于锁定状态,并决定为外星 RPG 的玩家制作一个有趣的玩具,该玩具具有 3D 空间的 2d map。

如果我想要包含 Spinward-Rimward 的每一行或纬度和经度小于 10 的每一行

第一个非常简单,您已经知道答案:

for item in data:
    if item[0] == 'Spinward-Rimward':
        print(item)

对于第二个,你会发现 tuple unpack 很方便:

for spin, star, lat, lng, *_ in data:
    if lat <= 10 and lng <= 10:
        print(item)

那个*星语法意味着“给我剩下的”作为一个列表,并且使用_下划线作为变量名是一种传统的说法,即“我不会使用这个值,所以我什至不会费心给它一个真实的名字。” 为了获得额外的荣誉,我们可以使用该语法来修改您的第一个问题的答案:

for spin, *rest in data:
    if spin == 'Spinward-Rimward':
        print(rest)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM