Skip to content

Commit 592dade

Browse files
Enhanced code quality and optimized code (#316)
1 parent 4e0372d commit 592dade

File tree

11 files changed

+47
-40
lines changed

11 files changed

+47
-40
lines changed

pydatastructs/graphs/adjacency_list.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ def __new__(cls, *vertices):
2020
for vertex in vertices:
2121
obj.__setattr__(vertex.name, vertex)
2222
obj.vertices = [vertex.name for vertex in vertices]
23-
obj.edge_weights = dict()
23+
obj.edge_weights = {}
2424
return obj
2525

2626
@classmethod

pydatastructs/graphs/adjacency_matrix.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@ def __new__(cls, *vertices):
2020
obj.vertices = [vertex.name for vertex in vertices]
2121
for vertex in vertices:
2222
obj.__setattr__(vertex.name, vertex)
23-
obj.matrix = dict()
23+
obj.matrix = {}
2424
for vertex in vertices:
25-
obj.matrix[vertex.name] = dict()
26-
obj.edge_weights = dict()
25+
obj.matrix[vertex.name] = {}
26+
obj.edge_weights = {}
2727
return obj
2828

2929
@classmethod
@@ -34,13 +34,13 @@ def methods(self):
3434

3535
def is_adjacent(self, node1, node2):
3636
node1, node2 = str(node1), str(node2)
37-
row = self.matrix.get(node1, dict())
37+
row = self.matrix.get(node1, {})
3838
return row.get(node2, False) is not False
3939

4040
def neighbors(self, node):
4141
node = str(node)
4242
neighbors = []
43-
row = self.matrix.get(node, dict())
43+
row = self.matrix.get(node, {})
4444
for node, presence in row.items():
4545
if presence:
4646
neighbors.append(self.__getattribute__(

pydatastructs/graphs/algorithms.py

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ def breadth_first_search(
8787
def _breadth_first_search_adjacency_list(
8888
graph, source_node, operation, *args, **kwargs):
8989
bfs_queue = Queue()
90-
visited = dict()
90+
visited = {}
9191
bfs_queue.append(source_node)
9292
visited[source_node] = True
9393
while len(bfs_queue) != 0:
@@ -184,7 +184,7 @@ def _generate_layer(**kwargs):
184184

185185
def _breadth_first_search_parallel_adjacency_list(
186186
graph, source_node, num_threads, operation, *args, **kwargs):
187-
visited, layers = dict(), dict()
187+
visited, layers = {}, {}
188188
layers[0] = set()
189189
layers[0].add(source_node)
190190
visited[source_node] = True
@@ -235,7 +235,7 @@ def _minimum_spanning_tree_kruskal_adjacency_list(graph):
235235

236236
def _minimum_spanning_tree_prim_adjacency_list(graph):
237237
q = PriorityQueue(implementation='binomial_heap')
238-
e = dict()
238+
e = {}
239239
mst = Graph(implementation='adjacency_list')
240240
q.push(next(iter(graph.vertices)), 0)
241241
while not q.is_empty:
@@ -345,8 +345,8 @@ def _find_min(q, v, i):
345345

346346
def _minimum_spanning_tree_parallel_prim_adjacency_list(graph, num_threads):
347347
q = [PriorityQueue(implementation='binomial_heap') for _ in range(num_threads)]
348-
e = [dict() for _ in range(num_threads)]
349-
v2q = dict()
348+
e = [{} for _ in range(num_threads)]
349+
v2q = {}
350350
mst = Graph(implementation='adjacency_list')
351351

352352
itr = iter(graph.vertices)
@@ -484,12 +484,12 @@ def _assign(graph, u, incoming, assigned, component):
484484
stack.pop()
485485

486486
def _strongly_connected_components_kosaraju_adjacency_list(graph):
487-
visited, incoming, L = dict(), dict(), []
487+
visited, incoming, L = {}, {}, []
488488
for u in graph.vertices:
489489
if not visited.get(u, False):
490490
_visit(graph, u, visited, incoming, L)
491491

492-
assigned = dict()
492+
assigned = {}
493493
components = []
494494
for i in range(-1, -len(L) - 1, -1):
495495
comp = set()
@@ -622,7 +622,7 @@ def depth_first_search(
622622
def _depth_first_search_adjacency_list(
623623
graph, source_node, operation, *args, **kwargs):
624624
dfs_stack = Stack()
625-
visited = dict()
625+
visited = {}
626626
dfs_stack.append(source_node)
627627
visited[source_node] = True
628628
while len(dfs_stack) != 0:
@@ -706,7 +706,7 @@ def shortest_paths(graph: Graph, algorithm: str,
706706
return getattr(algorithms, func)(graph, source, target)
707707

708708
def _bellman_ford_adjacency_list(graph: Graph, source: str, target: str) -> tuple:
709-
distances, predecessor = dict(), dict()
709+
distances, predecessor = {}, {}
710710

711711
for v in graph.vertices:
712712
distances[v] = float('inf')
@@ -736,7 +736,7 @@ def _bellman_ford_adjacency_list(graph: Graph, source: str, target: str) -> tupl
736736

737737
def _dijkstra_adjacency_list(graph: Graph, start: str, target: str):
738738
V = len(graph.vertices)
739-
visited, dist, pred = dict(), dict(), dict()
739+
visited, dist, pred = {}, {}, {}
740740
for v in graph.vertices:
741741
visited[v] = False
742742
pred[v] = None
@@ -814,12 +814,12 @@ def all_pair_shortest_paths(graph: Graph, algorithm: str) -> tuple:
814814
return getattr(algorithms, func)(graph)
815815

816816
def _floyd_warshall_adjacency_list(graph: Graph):
817-
dist, next_vertex = dict(), dict()
817+
dist, next_vertex = {}, {}
818818
V, E = graph.vertices, graph.edge_weights
819819

820820
for v in V:
821-
dist[v] = dict()
822-
next_vertex[v] = dict()
821+
dist[v] = {}
822+
next_vertex[v] = {}
823823

824824
for name, edge in E.items():
825825
dist[edge.source.name][edge.target.name] = edge.value
@@ -832,9 +832,9 @@ def _floyd_warshall_adjacency_list(graph: Graph):
832832
for k in V:
833833
for i in V:
834834
for j in V:
835-
dist_i_j = dist.get(i, dict()).get(j, float('inf'))
836-
dist_i_k = dist.get(i, dict()).get(k, float('inf'))
837-
dist_k_j = dist.get(k, dict()).get(j, float('inf'))
835+
dist_i_j = dist.get(i, {}).get(j, float('inf'))
836+
dist_i_k = dist.get(i, {}).get(k, float('inf'))
837+
dist_k_j = dist.get(k, {}).get(j, float('inf'))
838838
next_i_k = next_vertex.get(i + '_' + k, None)
839839
if dist_i_j > dist_i_k + dist_k_j:
840840
dist[i][j] = dist_i_k + dist_k_j

pydatastructs/graphs/tests/test_algorithms.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ def _test_breadth_first_search(ds):
2626
for edge in edges:
2727
G1.add_edge(*edge)
2828

29-
parent = dict()
29+
parent = {}
3030
def bfs_tree(curr_node, next_node, parent):
3131
if next_node != "":
3232
parent[next_node] = curr_node
@@ -110,7 +110,7 @@ def _test_breadth_first_search_parallel(ds):
110110
for edge in edges:
111111
G1.add_edge(*edge)
112112

113-
parent = dict()
113+
parent = {}
114114
def bfs_tree(curr_node, next_node, parent):
115115
if next_node != "":
116116
parent[next_node] = curr_node
@@ -209,7 +209,7 @@ def _test_depth_first_search(ds):
209209
for edge in edges:
210210
G1.add_edge(*edge)
211211

212-
parent = dict()
212+
parent = {}
213213
def dfs_tree(curr_node, next_node, parent):
214214
if next_node != "":
215215
parent[next_node] = curr_node

pydatastructs/linear_data_structures/arrays.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -79,13 +79,13 @@ def __new__(cls, dtype=NoneType, *args, **kwargs):
7979
for i in range(len(args[0])):
8080
if _check_type(args[0][i], dtype) is False:
8181
args[0][i] = dtype(args[0][i])
82-
size, data = args[1], [arg for arg in args[0]]
82+
size, data = args[1], list(args[0])
8383
elif _check_type(args[1], list) and \
8484
_check_type(args[0], int):
8585
for i in range(len(args[1])):
8686
if _check_type(args[1][i], dtype) is False:
8787
args[1][i] = dtype(args[1][i])
88-
size, data = args[0], [arg for arg in args[1]]
88+
size, data = args[0], list(args[1])
8989
else:
9090
raise TypeError("Expected type of size is int and "
9191
"expected type of data is list/tuple.")
@@ -104,7 +104,7 @@ def __new__(cls, dtype=NoneType, *args, **kwargs):
104104
if _check_type(args[0][i], dtype) is False:
105105
args[0][i] = dtype(args[0][i])
106106
obj._size, obj._data = len(args[0]), \
107-
[arg for arg in args[0]]
107+
list(args[0])
108108
else:
109109
raise TypeError("Expected type of size is int and "
110110
"expected type of data is list/tuple.")
@@ -414,7 +414,7 @@ class ArrayForTrees(DynamicOneDimensionalArray):
414414
"""
415415
def _modify(self):
416416
if self._num/self._size < self._load_factor:
417-
new_indices = dict()
417+
new_indices = {}
418418
arr_new = OneDimensionalArray(self._dtype, 2*self._num + 1)
419419
j = 0
420420
for i in range(self._last_pos_filled + 1):

pydatastructs/miscellaneous_data_structures/queue.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,9 @@ def __new__(cls, implementation='array', **kwargs):
5252
return LinkedListQueue(
5353
kwargs.get('items', None)
5454
)
55-
raise NotImplementedError(
56-
"%s hasn't been implemented yet."%(implementation))
55+
else:
56+
raise NotImplementedError(
57+
"%s hasn't been implemented yet."%(implementation))
5758

5859
@classmethod
5960
def methods(cls):

pydatastructs/trees/binary_trees.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1338,7 +1338,6 @@ def _delete_root(self, node_idx, node_idx1):
13381338
new_indices = self.tree.delete(node_idx1)
13391339
if new_indices is not None:
13401340
self.root_idx = new_indices[root_key]
1341-
return
13421341

13431342
def __leaf_case(self, node_idx, node_idx1):
13441343
walk = node_idx

pydatastructs/trees/heaps.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -195,9 +195,9 @@ def __str__(self):
195195
node = self.heap[i]
196196
if node._leftmost <= self._last_pos_filled:
197197
if node._rightmost <= self._last_pos_filled:
198-
children = [x for x in range(node._leftmost, node._rightmost + 1)]
198+
children = list(range(node._leftmost, node._rightmost + 1))
199199
else:
200-
children = [x for x in range(node._leftmost, self._last_pos_filled + 1)]
200+
children = list(range(node._leftmost, self._last_pos_filled + 1))
201201
else:
202202
children = []
203203
to_be_printed[i] = (node.key, node.data, children)
@@ -367,7 +367,9 @@ class BinomialHeap(Heap):
367367
"""
368368
__slots__ = ['root_list']
369369

370-
def __new__(cls, root_list=[]):
370+
def __new__(cls, root_list=None):
371+
if root_list is None:
372+
root_list = []
371373
if not all((_check_type(root, BinomialTree))
372374
for root in root_list):
373375
raise TypeError("The root_list should contain "

pydatastructs/trees/space_partitioning_trees.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ def __new__(cls, segs):
5252
for i in range(len(segs)):
5353
segs[i] = list(segs[i])
5454
segs[i].sort()
55-
obj.segments = [seg for seg in segs]
55+
obj.segments = list(segs)
5656
obj.tree, obj.root_idx, obj.cache = [], None, False
5757
return obj
5858

pydatastructs/utils/misc_util.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,11 @@ class LinkedListNode(Node):
242242
def methods(cls):
243243
return ['__new__', '__str__']
244244

245-
def __new__(cls, key, data=None, links=['next'], addrs=[None]):
245+
def __new__(cls, key, data=None, links=None, addrs=None):
246+
if links is None:
247+
links = ['next']
248+
if addrs is None:
249+
addrs = [None]
246250
obj = Node.__new__(cls)
247251
obj.key = key
248252
obj.data = data
@@ -415,7 +419,7 @@ def methods(cls):
415419
def __new__(cls, char=None):
416420
obj = Node.__new__(cls)
417421
obj.char = char
418-
obj._children = dict()
422+
obj._children = {}
419423
obj.is_terminal = False
420424
return obj
421425

@@ -440,4 +444,5 @@ def _comp(u, v, tcomp):
440444
return True
441445
elif u is None and v is None:
442446
return False
443-
return tcomp(u, v)
447+
else:
448+
return tcomp(u, v)

pydatastructs/utils/tests/test_misc_util.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ def test_BinomialTreeNode():
3535

3636
def test_MAryTreeNode():
3737
m = MAryTreeNode(1, 1)
38-
m.add_children(*[i for i in range(2,10)])
38+
m.add_children(*list(range(2, 10)))
3939
assert str(m) == "(1, 1)"
4040
assert str(m.children) == "['2', '3', '4', '5', '6', '7', '8', '9']"
4141

0 commit comments

Comments
 (0)