summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xmore_itertools/more.py4
-rw-r--r--more_itertools/more.pyi4
-rw-r--r--tests/test_more.py30
3 files changed, 19 insertions, 19 deletions
diff --git a/more_itertools/more.py b/more_itertools/more.py
index 8c9e332..4567a7c 100755
--- a/more_itertools/more.py
+++ b/more_itertools/more.py
@@ -3707,7 +3707,7 @@ def product_index(element, *args):
return index
-def combination_index(iterable, element):
+def combination_index(element, iterable):
"""Equivalent to ``list(combinations(iterable, r)).index(element)
The subsequences of *iterable* that are of length *r* can be ordered
@@ -3744,7 +3744,7 @@ def combination_index(iterable, element):
return factorial(n + 1) // (factorial(k + 1) * factorial(n - k)) - index
-def permutation_index(iterable, element):
+def permutation_index(element, iterable):
"""Equivalent to ``list(permutations(iterable, r)).index(element)```
The subsequences of *iterable* that are of length *r* where order is
diff --git a/more_itertools/more.pyi b/more_itertools/more.pyi
index 8bebd7c..b397eab 100644
--- a/more_itertools/more.pyi
+++ b/more_itertools/more.pyi
@@ -467,8 +467,8 @@ def nth_permutation(
def value_chain(*args: Iterable[Any]) -> Iterable[Any]: ...
def product_index(element: Iterable[_T], *args: Iterable[_T]) -> int: ...
def combination_index(
- iterable: Iterable[_T], element: Iterable[_T]
+ element: Iterable[_T], iterable: Iterable[_T]
) -> int: ...
def permutation_index(
- iterable: Iterable[_T], element: Iterable[_T]
+ element: Iterable[_T], iterable: Iterable[_T]
) -> int: ...
diff --git a/tests/test_more.py b/tests/test_more.py
index 665ee07..7ac88e4 100644
--- a/tests/test_more.py
+++ b/tests/test_more.py
@@ -4274,7 +4274,7 @@ class CombinationIndexTests(TestCase):
r = 4
first_index = {}
for index, element in enumerate(combinations(iterable, r)):
- actual = mi.combination_index(iterable, element)
+ actual = mi.combination_index(element, iterable)
expected = first_index.setdefault(element, index)
self.assertEqual(actual, expected)
@@ -4283,7 +4283,7 @@ class CombinationIndexTests(TestCase):
r = len(iterable)
first_index = {}
for index, element in enumerate(combinations(iterable, r=r)):
- actual = mi.permutation_index(iterable, element)
+ actual = mi.combination_index(element, iterable)
expected = first_index.setdefault(element, index)
self.assertEqual(actual, expected)
@@ -4292,31 +4292,31 @@ class CombinationIndexTests(TestCase):
r = 3
first_index = {}
for index, element in enumerate(combinations(iterable, r)):
- actual = mi.combination_index(iterable, element)
+ actual = mi.combination_index(element, iterable)
expected = first_index.setdefault(element, index)
self.assertEqual(actual, expected)
def test_null(self):
- actual = mi.combination_index([], tuple())
+ actual = mi.combination_index(tuple(), [])
expected = 0
self.assertEqual(actual, expected)
def test_long(self):
- actual = mi.combination_index(range(180), (2, 12, 35, 126))
+ actual = mi.combination_index((2, 12, 35, 126), range(180))
expected = 2000000
self.assertEqual(actual, expected)
def test_invalid_order(self):
with self.assertRaises(ValueError):
- mi.combination_index('abcde', tuple('acb'))
+ mi.combination_index(tuple('acb'), 'abcde')
def test_invalid_large(self):
with self.assertRaises(ValueError):
- mi.combination_index('abcdef', tuple('abcdefg'))
+ mi.combination_index(tuple('abcdefg'), 'abcdef')
def test_invalid_match(self):
with self.assertRaises(ValueError):
- mi.product_index('abcde', tuple('axe'))
+ mi.product_index(tuple('axe'), 'abcde')
class PermutationIndexTests(TestCase):
@@ -4325,7 +4325,7 @@ class PermutationIndexTests(TestCase):
r = 4
first_index = {}
for index, element in enumerate(permutations(iterable, r)):
- actual = mi.permutation_index(iterable, element)
+ actual = mi.permutation_index(element, iterable)
expected = first_index.setdefault(element, index)
self.assertEqual(actual, expected)
@@ -4333,7 +4333,7 @@ class PermutationIndexTests(TestCase):
iterable = 'abcd'
first_index = {}
for index, element in enumerate(permutations(iterable)):
- actual = mi.permutation_index(iterable, element)
+ actual = mi.permutation_index(element, iterable)
expected = first_index.setdefault(element, index)
self.assertEqual(actual, expected)
@@ -4342,24 +4342,24 @@ class PermutationIndexTests(TestCase):
r = 3
first_index = {}
for index, element in enumerate(permutations(iterable, r)):
- actual = mi.permutation_index(iterable, element)
+ actual = mi.permutation_index(element, iterable)
expected = first_index.setdefault(element, index)
self.assertEqual(actual, expected)
def test_null(self):
- actual = mi.permutation_index([], tuple())
+ actual = mi.permutation_index(tuple(), [])
expected = 0
self.assertEqual(actual, expected)
def test_long(self):
- actual = mi.permutation_index(range(180), (2, 12, 35, 126))
+ actual = mi.permutation_index((2, 12, 35, 126), range(180))
expected = 11631678
self.assertEqual(actual, expected)
def test_invalid_large(self):
with self.assertRaises(ValueError):
- mi.permutation_index('abcdef', tuple('abcdefg'))
+ mi.permutation_index(tuple('abcdefg'), 'abcdef')
def test_invalid_match(self):
with self.assertRaises(ValueError):
- mi.product_index('abcde', tuple('axe'))
+ mi.product_index(tuple('axe'), 'abcde')