170 похожих чатов

Всем привет. Есть такой код: import unittest from typing import Iterator class Test(unittest.TestCase):

def setUp(self):
self.solution = Solution()

def test_resolve(self):
result = list(self.solution.resolve(["a", "b", "c", 'd', 'e']))
self.assertEqual(result[0], ['b', 'a', 'c', 'd', 'e'])
self.assertEqual(result[1], ['b', 'c', 'a', 'd', 'e'])
self.assertEqual(result[2], ['b', 'c', 'd', 'a', 'e'])
self.assertEqual(result[3], ['b', 'c', 'd', 'e', 'a'])
self.assertEqual(result[4], ['c', 'b', 'd', 'e', 'a'])


class Solution:

@staticmethod
def resolve(sequence: list) -> Iterator:
"""
Perm(n) = n * (n - 1)
:param sequence: list to bo processed
:return: List of list of combinations
"""
length = len(sequence)
tmp = sequence.copy()
while True:
for i in range(0, length - 1):
tmp[i], tmp[i + 1] = tmp[i + 1], tmp[i]
yield tmp # problem here and why?
if tmp == sequence:
break


if __name__ == "__main__":
# not working
unittest.main()

# working
for entry in Solution.resolve(["a", "b", "c", 'd', 'e']):
print(entry)
При запуске тестов - они падают с ошибкой. При обычной итерации (строка 42) - все в норме. Проблема похоже в строке 32. Если заменить на
yield tmp.copy()
все работает и в тест-классе.
В чем может быть прикол?

1 ответов

1 просмотр

Ну а как ты думаешь, что происходит когда ты модифицируешь список после того как кто-то получил на него ссылку?

Похожие вопросы

Обсуждают сегодня

@Aiwan что такое база образца?
Alexey
27
Не многие знают, а кто знает, тот уже успел забыть, что в далёком 2004 году эта игра произвела настоящий фурор, настолько революционной была технология, применяемая для её соз...
ICCID
4
коллеги, добрый вечер! А никто не знает как модальная форма может себя закрыть? Ну допустим модальная форма определила, что смысла ей работать нет и хочет вернуть modalResult...
Михаил
83
Короче я тут узнал полный пиздец Что кучу постов которые я создавал через posted Спустя время не могу редактировать и менять Мол телега возвращае ошибку Это реально так ...
inc.
13
Хотя у меня сейчас есть более сложная задача, вот её думаю: как объяснить челу переходного возраста противоположного полу, обучающегося в польском колледже (а-ля наш техникум)...
Вячеслав Кузьменко
15
а сколько всего в IT умерло? Где флеш-игры, их было туча, где они все? Сегодня технология есть, а завтра вжух и мёртвая. Этот wasm сильно напоминает джавовские апплеты, silver...
Constantin F.
5
Добрый день Хочу начать обучение языку, не являюсь представителем it, буду благодарна за помощь, совсем пока не понимаю ничего) Подскажите, пожалуйста, где можно начать первы...
Sara Lala
30
а вы в курсе, что Initialize() не работает? var arr123: array[0..123] of Byte; ... Initialize(arr123, SizeOf(arr123));
Iluha Companets
8
что читать по делфи?вообще 0 в нем
fd dsds
9
верно что я могу удалить эти addq и subq т.к. со стеком никакого взаимодействия нет (исключая call)?
Michael
16
Карта сайта