gpt4 book ai didi

python - 使用 Python 删除重叠的元组值

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:55:19 25 4
gpt4 key购买 nike

我有一个元组列表(我们将其命名为 yz_list),其中包含 N 个元组,其起始值和结束值如下所示:(start, end),如下例所示:

yz_list = [(0, 6), (1, 7), (2, 8), (3, 9), (4, 10), (5, 11), (6, 12), (18, 24)]

我想删除所有与先前保存的元组的间隔重叠的值。在上面显示的序列中表示这种情况的输出是:

 result = [(0,6), (6,12), (18,24)]

我如何使用 Python 实现这个结果?

编辑 #1

下面的代码是我生成这个元组的代码:

for i, a in enumerate(seq):
if seq[i:i+multiplier] == "x"*multiplier:
to_replace.append((i, i+multiplier))

for i, j in enumerate(to_replace):
print(i,j)
if i == 0:
def_to_replace.append(j)
else:
ind = def_to_replace[i-1]
print(j[0]+1, "\n", ind)
if j[0]+1 not in range(ind[0], ind[1]):
def_to_replace.append(j)
# print(i, j)
print(def_to_replace)
for item in def_to_replace:
frag = replacer(frame_calc(seq[:item[0]]), rep0, rep1, rep2)
for k, v in enumerate(seq_dup[item[0]:item[1]]):
seq_dup[int(item[0]) + int(k)] = list(frag)[k]

return "".join(seq_dup)

随着我使用 TDD 进行开发,我正在逐步进行开发,现在我正在考虑如何实现重叠元组的删除。我真的不知道将它们作为集合使用并查看重叠项是否是个好主意。

生成结果列表的伪代码是:

for item in yz_list:
if is not yz_list first item:
gets item first value
see if the value is betwen any of the values from tuples added on the result list

最佳答案

这可能有效。没有花哨的东西,只需手动处理每个元组以查看任一值是否在已保存元组的设置范围内:

yz_list = [(0, 6), (1, 7), (2, 8), (3, 9), (4, 10), (5, 11), (6, 12), (18, 24)]

result = [yz_list[0]]

bounds = yz_list[0][0], yz_list[0][1]

for tup in yz_list[1:]:
if tup[0] in range(bounds[0], bounds[1]) or tup[1] in range(bounds[0], bounds[1]):
pass
else:
result.append(tup)

print result # [(0, 6), (6, 12), (18, 24)]

关于python - 使用 Python 删除重叠的元组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47425676/

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