source: utilitiespy/tudelft/utilities/immutablelist/Tuples.py@ 1003

Last change on this file since 1003 was 1003, checked in by wouter, 3 months ago

#341 added Tuples. No test because there IS NO test in java. Needs fixing

File size: 1.3 KB
Line 
1from typing import TypeVar, Collection
2from tudelft.utilities.immutablelist.ImmutableList import ImmutableList
3from tudelft.utilities.immutablelist.Tuple import Tuple
4
5
6T1 = TypeVar('T1')
7T2 = TypeVar('T2')
8
9class Tuples (ImmutableList[Tuple[T1,T2]]):
10 '''
11 Generate list of Tuple[T1, T2] with all combinations of 1 element from list1
12 and one from list2. Sometimes called "cartesian product". You can use this
13 recursively to generate bigger products; but you can also use {@link Outer}.
14 @param <T1> type of the first element of the tuple
15 @param <T2> type of the second element of the tuple
16 @param <T> type of the elements
17 '''
18
19 def __init__(self, list1:ImmutableList[T1],
20 list2:ImmutableList[T2] ):
21 '''
22 contains all possible tuples with first element from list1 and second
23 from list2
24
25 @param list1 first element list
26 @param list2 second element list
27 '''
28
29 self._list1 = list1
30 self._list2 = list2
31 self._size = list1.size()* list2.size()
32
33 def get(self, index:int) -> Tuple[T1, T2] :
34 indices = divmod(index,self.list1.size())
35 return Tuple(self.list1.get(indices[1]), self.list2.get(indices[0]))
36
37 def size(self) ->int:
38 return self._size
39
40
Note: See TracBrowser for help on using the repository browser.