gpt4 book ai didi

Python查找列表中元素的索引并在另一个列表中删除

转载 作者:行者123 更新时间:2023-11-30 22:39:56 24 4
gpt4 key购买 nike

我使用的是 Python 2.7,无法找到问题的答案。

我有 3 个列表(x 和 y 坐标以及检测到的圆的半径):

XSum = [1316, 1324, 1330, 1344, 1356, 1344, 1356, 1308, 1322, 1310, 1336, 1934]
YSum = [960, 952, 972, 954, 964, 970, 948, 928, 940, 950, 984, 1080]
RSum = [379, 375, 355, 352, 340, 347, 338, 348, 361, 342, 342, 286]

我必须在 XSum 中查找不在 675 和 1350(索引 4、6 和 11)之间的元素。具有索引的元素必须从所有三个列表中删除。

XSum = [1316, 1324, 1330, 1344, **1356**, 1344, **1356**, 1308, 1322, 1310, 1336, **1934**]
YSum = [960, 952, 972, 954, **964**, 970, **948**, 928, 940, 950, 984, **1080**]
RSum = [379, 375, 355, 352, **340**, 347, **338**, 348, 361, 342, 342, **286**]

首次删除超出范围的索引后:

XSum2 = [1316, 1324, 1330, 1344, 1344, 1308, 1322, 1310, 1336]
YSum2 = [960, 952, 972, 954, 970, 928, 940, 950, 984]
RSum2 = [379, 375, 355, 352, 347, 348, 361, 342, 342]

下一步是在 YSum 中查找不在 940 到 980 之间的元素,并从所有三个列表中删除检测到的索引(索引 9)。

XSum2 = [1316, 1324, 1330, 1344, 1344, 1308, 1322, 1310, **1336**]
YSum2 = [960, 952, 972, 954, 970, 928, 940, 950, **984**]
RSum2 = [379, 375, 355, 352, 347, 348, 361, 342, **342**]

结果列表应如下所示:

XSum_Result = [1316, 1324, 1330, 1344, 1344, 1308, 1322, 1310]
YSum_Result = [960, 952, 972, 954, 970, 928, 940, 950]
RSum_Result = [379, 375, 355, 352, 347, 348, 361, 342]

我认为这应该是一项简单的任务,但我只是不知道如何通过索引从其他列表中删除。

谢谢大家的帮助

最佳答案

您可以使用 zip 将它们分组在一起,并执行逻辑对候选者进行子集化,然后再次压缩(这与原始 zip 相反)并解压缩到列表中,例如:

x, y, r = (list(el) for el in zip(*((a, b, c) for a, b, c in zip(XSum, YSum, RSum) if 675 <= a <= 1350 and 940 <= b <= 980)))

关于Python查找列表中元素的索引并在另一个列表中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43003832/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com