]> granicus.if.org Git - python/commitdiff
Minor code refactoring. Compute len() one fewer times on one code path. (GH-8094)
authorRaymond Hettinger <rhettinger@users.noreply.github.com>
Wed, 4 Jul 2018 22:28:20 +0000 (15:28 -0700)
committerGitHub <noreply@github.com>
Wed, 4 Jul 2018 22:28:20 +0000 (15:28 -0700)
Lib/random.py

index 10069084916f66ea0a80e9680878364aae121c40..b2c0d6fcc3b832258e47ec0bb5685d6ab341c4c7 100644 (file)
@@ -371,19 +371,19 @@ class Random(_random.Random):
 
         """
         random = self.random
+        n = len(population)
         if cum_weights is None:
             if weights is None:
                 _int = int
-                total = len(population)
-                return [population[_int(random() * total)] for i in range(k)]
+                return [population[_int(random() * n)] for i in range(k)]
             cum_weights = list(_itertools.accumulate(weights))
         elif weights is not None:
             raise TypeError('Cannot specify both weights and cumulative weights')
-        if len(cum_weights) != len(population):
+        if len(cum_weights) != n:
             raise ValueError('The number of weights does not match the population')
         bisect = _bisect.bisect
         total = cum_weights[-1]
-        hi = len(cum_weights) - 1
+        hi = n - 1
         return [population[bisect(cum_weights, random() * total, 0, hi)]
                 for i in range(k)]