Ref Math Comb
## Python math.comb() Method
The `math.comb()` method is a built-in function in Python's standard `math` module. It is used to calculate the number of ways to choose $k$ items from $n$ items without repetition and without order. This is commonly known as the **combination** or **binomial coefficient**, mathematically represented as:
$$\binom{n}{k} = \frac{n!}{k!(n-k)!}$$
---
### Introduction to Combinations
In combinatorics, a combination is a selection of items from a collection, such as the order of selection does not matter. For example, if you have three fruits (apple, banana, cherry) and you want to choose two, the possible combinations are:
1. Apple and Banana
2. Apple and Cherry
3. Banana and Cherry
The order does not matter (choosing "Apple and Banana" is the same as choosing "Banana and Apple"). The `math.comb(3, 2)` function will return `3`.
> **Note:** This method was introduced in **Python 3.8**.
---
### Syntax
```python
import math
math.comb(n, k)
```
### Parameters
| Parameter | Type | Description |
| :--- | :--- | :--- |
| **`n`** | `int` | Required. The total number of items in the set. Must be a non-negative integer. |
| **`k`** | `int` | Required. The number of items to choose from the set. Must be a non-negative integer. |
### Return Value
* **Type:** `int`
* **Description:** Returns an integer representing the total number of combinations (the binomial coefficient $\binom{n}{k}$).
---
### Code Examples
#### Example 1: Basic Usage
The following example calculates the number of ways to choose 5 items from a pool of 7 items:
```python
import math
# Total number of items
n = 7
# Number of items to choose
k = 5
# Calculate the combinations
result = math.comb(n, k)
print(f"Number of ways to choose {k} items from {n} items is: {result}")
```
**Output:**
```text
Number of ways to choose 5 items from 7 items is: 21
```
#### Example 2: Edge Cases
This example demonstrates how `math.comb()` handles boundary conditions, such as choosing 0 items, choosing all items, or choosing more items than are available.
```python
import math
# Choosing 0 items from 10 (There is only 1 way: to choose nothing)
print(math.comb(10, 0)) # Output: 1
# Choosing all 10 items from 10 (There is only 1 way: to choose everything)
print(math.comb(10, 10)) # Output: 1
# Choosing more items than available (k > n returns 0)
print(math.comb(5, 8)) # Output: 0
```
**Output:**
```text
1
1
0
```
---
### Considerations & Exceptions
1. **Negative Values:** Both `n` and `k` must be non-negative integers. If either argument is negative, a `ValueError` is raised.
```python
math.comb(-5, 2) # Raises ValueError: n must be a non-negative integer
```
2. **Non-Integer Types:** The arguments must be of type `int`. Passing floats or other types will result in a `TypeError`.
```python
math.comb(5.0, 2) # Raises TypeError: 'float' object cannot be interpreted as an integer
```
3. **Performance:** The `math.comb()` function is highly optimized in C. It evaluates to an integer without computing full factorials unless necessary, preventing large intermediate values from consuming excessive memory.
YouTip