#python #performance
#python #Производительность
Вопрос:
Мне нужно знать, существует ли алгоритм для поиска первого повторяющегося подмножества в списке целых чисел при вычислении указанного списка. Например, учитывая функцию, которая выводит в для таких элементов, как
1
2
3
1
2
3
Я хотел бы иметь возможность прерываться при первом появлении повторения, оставляя только с
[1,2,3]
Причина в том, что я не хочу вычислять весь список по соображениям производительности.
Есть ли какой-нибудь способ? Спасибо!
Ответ №1:
Я написал для вас пример кода:
Код:
nums = [1, 2, 3, 1, 2, 3]
result = []
for num in nums:
if num in result:
break # Break the iteration if the element already exists in the result list
result.append(num)
print("Result: {}".format(result))
Вывод:
>>> python3 test.py
Result: [1, 2, 3]
Ответ №2:
Альтернатива решению @milanbalazs, которое не будет останавливаться на отдельных повторяющихся элементах, а на повторяющихся последовательностях:
nums = [1,2,3,1,1,2,3,1]
result = []
for i, num in enumerate(nums):
if result and result == nums[i:i len(result)]:
print(f'Found repetition: {result}')
# Break the iteration when the sequence in result is the same
# as the upcoming sequence in nums
break
result.append(num)
print(f'Result: {result}')
Вывод
Found repetition: [1, 2, 3, 1]
Result: [1, 2, 3, 1]
Комментарии:
1. Тьфу! Я должен был упомянуть, что у меня есть повторяющиеся числа, которые являются частью списка…