team-10/env/Lib/site-packages/narwhals/expr_list.py
2025-08-02 07:34:44 +02:00

47 lines
1.7 KiB
Python

from __future__ import annotations
from typing import TYPE_CHECKING, Generic, TypeVar
if TYPE_CHECKING:
from narwhals.expr import Expr
ExprT = TypeVar("ExprT", bound="Expr")
class ExprListNamespace(Generic[ExprT]):
def __init__(self, expr: ExprT) -> None:
self._expr = expr
def len(self) -> ExprT:
"""Return the number of elements in each list.
Null values count towards the total.
Returns:
A new expression.
Examples:
>>> import polars as pl
>>> import narwhals as nw
>>> df_native = pl.DataFrame({"a": [[1, 2], [3, 4, None], None, []]})
>>> df = nw.from_native(df_native)
>>> df.with_columns(a_len=nw.col("a").list.len())
┌────────────────────────┐
| Narwhals DataFrame |
|------------------------|
|shape: (4, 2) |
|┌──────────────┬───────┐|
|│ a ┆ a_len │|
|│ --- ┆ --- │|
|│ list[i64] ┆ u32 │|
|╞══════════════╪═══════╡|
|│ [1, 2] ┆ 2 │|
|│ [3, 4, null] ┆ 3 │|
|│ null ┆ null │|
|│ [] ┆ 0 │|
|└──────────────┴───────┘|
└────────────────────────┘
"""
return self._expr._with_elementwise(
lambda plx: self._expr._to_compliant_expr(plx).list.len()
)