0

why the function below "print(list(vague_list))" generates a list consisting of 4 up to 6 elements each being randomly chosen fr

Hi all, Please kindly help to understand why the function below "print(list(vague_list))" generates a list consisting of 4 up to 6 elements each being randomly chosen from the initial list ["A", "B", "C", "D", "E"]? quote import random class VagueList: def __init__(self, cont): self.cont = cont def __getitem__(self, index): return self.cont[index + random.randint(-1, 1)] def __len__(self): return random.randint(0, len(self.cont)*2) vague_list = VagueList(["A", "B", "C", "D", "E"]) print(list(vague_list)) unquote Possible outputs: ['E', 'C', 'C', 'D'], or ['E', 'C', 'C', 'D', 'E'], or ['E', 'C', 'C', 'D', 'E', 'E'], etc. Why and how it works?

30th Jan 2022, 4:36 PM
Salinger
Salinger - avatar
1 ответ
+ 2
Hi, print(list(vague_list)) is equal to print VagueList[0] to VagueList[4] by call to function __getitem__(index) So, a random value (-1, 0 or 1) is added to index (0 to 4) While (index + random.randint(-1, 1)) <5, __getitem__ is called Sometimes, returns 4 values, when random = 1 ... I hope that explain is good for you Mbzh31
3rd Feb 2022, 7:21 PM
MBZH31
MBZH31 - avatar