我如何根据列表(H)检查元组列表(T),然后提取列表中这些元组的+-5个与H)中的元素相对应的?

问题描述 投票:0回答:1

我还没有做过太多列表/元组检查,我想尝试一下。 我想从列表中提取元素,比较包含元组的列表并向其中添加一些语句。

count1 = 100
theCounter = range(count1)
rsData = 56
T = []
R = [56,112,168,224,280]
H = [95,74,53,32,11]
for i in theCounter:
    T.append((count1,rsData))
    count1 = count1 - 1
    if (count1/25).is_integer() :
        rsData = rsData + 56
    
print(R)
print(H)
print(T)

问题来了:

T 是元组列表。 [(100, 56), (99, 56), (98, 56), (97, 56), (96, 56), (95, 56), (94, 56), (93, 56), ( 92, 56), (91, 56), (90, 56), (89, 56), (88, 56), (87, 56), (86, 56), (85, 56), (84, 56), (83, 56), (82, 56), (81, 56), (80, 56), (79, 56), (78, 56), (77, 56), (76, 56) , (75, 112), (74, 112), (73, 112), (72, 112), (71, 112), (70, 112), (69, 112), (68, 112), ( 67, 112), (66, 112),....]

我想搜索 T 中每个元组中的第一个元素(this,notThis)并提取与列表 H 对应的元组并创建新列表。接下来我想要前面的 5 个元素和后面的 5 个元素。

示例:来自 H[1] = 74 list_H_74 = [(79, 56), (78, 56), (77, 56), (76, 56), (75, 112), (74, 112), (73, 112), (72, 112) , (71, 112), (70, 112), (69, 112)]

在此之后,我想对照列表 R 中的元素检查 list_H_74 第二个元组元素 (rsData),该元素必须与 H 中的元素相对应。 示例:如果 R[1] = 112(对照 H[1] (list_H_74) 检查) 列表_R_112_H_74 =

此列表_R_112_H_74需要一些条件:

  • list_R_112_H_74 中的第二个元组 (rsData) 必须在第一个元组达到 75 == H[1] 之前或处为 112 == R[1]
  • 如果已经达到112就无法回到56

如何在不使用数百行不必要的代码的情况下完成此任务?

可能不是这里最简单的问题,但也许在比较列表时可以使用一些智能功能。

我尝试了堆栈溢出,但这里没有太多问题,他们在比较元组并列出了这一高级内容。

python list for-loop if-statement tuples
1个回答
0
投票

根据我对你的问题的理解,这是我能想到的最好的结果,但不清楚你想要的输出是什么样子。

output = {
    f"{x}": [y for y in T if y[0] >= x - 5 and y[0] <= x + 5 and y[1] == R[H.index(x)]]
    for x in H
}
print(output)

说明:

  • 对于 H 中的每一项,创建一个列表
  • 列表中应填充来自 T 的元组,其中满足以下两个条件:
    • 元组中的第一项应在 H 中的项目的 +/- 5 范围内
    • 元组中的第二项应该是 R 中相同索引的值

输出:

{'95': [(100, 56), (99, 56), (98, 56), (97, 56), (96, 56), (95, 56), (94, 56), (93, 56), (92, 56), (91, 56), (90, 56)], '74': [(75, 112), (74, 112), (73, 112), (72, 112), (71, 112), (70, 112), (69, 112)], '53': [(50, 168), (49, 168), (48, 168)], '32': [], '11': []}
© www.soinside.com 2019 - 2024. All rights reserved.