gpt4 book ai didi

Python:删除列表中重复项之间的部分

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

我正在尝试让我的代码删除重复项之间的部分。我当前的代码似乎对第一组执行了正确的操作,但对于下一组,数字似乎倾斜了 1。

我尝试切换并将索引更改为+1 -1,删除 pop(),更改范围...

 user_input = input("Input:")

parsed_input = user_input.split()
printed_parsed = parsed_input


previous_indexes = []
values = []

i = -1
for index in parsed_input:
i += 1
if index in previous_indexes:
print(previous_indexes.index(index))
first_index = previous_indexes.index(index)
print(i)
second_index = i
new_values = list(range(first_index, second_index+1))
print(new_values)
new_values.pop(0)
print(new_values)
values.extend(new_values)
else:
previous_indexes.append(index)

print(printed_parsed)
print(values)

to_delete = values
target = printed_parsed
for offset, index in enumerate(to_delete):
index -= offset
del target[index]

print(target)

如果我输入3 8 6 5 6 11 7 2 4 9 7 0我期望得到 3 8 6 11 7 0 ,我得到 3 8 6 11 0 。不知怎的6在那里,但是 7不是。

最佳答案

更简单的可能方法:

parsed_input = [3, 8, 6, 5, 6, 11, 7, 2, 4, 9, 7, 0]

# Iterate the unique values in the list
for value in set(parsed_input):
# If there is one (or possibly none) instance of a value
# you can skip that value
if parsed_input.count(value) <= 1:
continue
# find the indices of the value
indices = [i for i, x in enumerate(parsed_input) if x == value]
# Remove everything between the first and last instance
del parsed_input[min(indices):max(indices)]

Out[211]: [3, 8, 6, 11, 7, 0]

有很多边缘情况(如果重复值位于另外两个重复值之间,那么顺序会很重要等),但对于当前输入来说这是可行的。

关于Python:删除列表中重复项之间的部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54046776/

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