{"record":{"id":"a53da48d191219d1","repo":"TheAlgorithms/Python","slug":"input-list-must-be-a-non-empty-list-a53da4","errorCode":null,"errorMessage":"Input list must be a non empty list","messagePattern":"Input list must be a non empty list","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"maths/series/harmonic.py","lineNumber":43,"sourceCode":"        ...\n    ValueError: Input series is not valid, valid series - [1, 2/3, 2]\n    >>> is_harmonic_series([])\n    Traceback (most recent call last):\n        ...\n    ValueError: Input list must be a non empty list\n    >>> is_harmonic_series([0])\n    Traceback (most recent call last):\n        ...\n    ValueError: Input series cannot have 0 as an element\n    >>> is_harmonic_series([1,2,0,6])\n    Traceback (most recent call last):\n        ...\n    ValueError: Input series cannot have 0 as an element\n    \"\"\"\n    if not isinstance(series, list):\n        raise ValueError(\"Input series is not valid, valid series - [1, 2/3, 2]\")\n    if len(series) == 0:\n        raise ValueError(\"Input list must be a non empty list\")\n    if len(series) == 1 and series[0] != 0:\n        return True\n    rec_series = []\n    series_len = len(series)\n    for i in range(series_len):\n        if series[i] == 0:\n            raise ValueError(\"Input series cannot have 0 as an element\")\n        rec_series.append(1 / series[i])\n    common_diff = rec_series[1] - rec_series[0]\n    for index in range(2, series_len):\n        if rec_series[index] - rec_series[index - 1] != common_diff:\n            return False\n    return True\n\n\ndef harmonic_mean(series: list) -> float:\n    \"\"\"\n    return the harmonic mean of series","sourceCodeStart":25,"sourceCodeEnd":61,"githubUrl":"https://github.com/TheAlgorithms/Python/blob/f5988cc09713315817df6a7e327e258013a94440/maths/series/harmonic.py#L25-L61","documentation":"Raised by is_harmonic_series() in maths/series/harmonic.py when the input is a list with zero elements. An empty series has no reciprocals to compare, so the common-difference test on the reciprocal sequence is impossible and the function rejects the input early with a clear message.","triggerScenarios":"Calling is_harmonic_series([]). Any code path that constructs the series dynamically (parsing, filtering, slicing) and yields an empty list will hit this.","commonSituations":"Parsing '1,2,3' style input where the string was empty; slicing a list with bad indices; filtering all elements out. Single-element lists are fine ([x] with x != 0 returns True).","solutions":["Check truthiness before calling: if series and is_harmonic_series(series)","Validate data length at ingestion time and reject empty input upstream","Provide a sensible default or skip processing when empty"],"exampleFix":"# before\nresult = is_harmonic_series(data)\n\n# after\nresult = bool(data) and is_harmonic_series(data)","handlingStrategy":"validation","validationCode":"result = bool(series) and is_harmonic_series(series)","typeGuard":"def is_non_empty_list(value: object) -> bool:\n    return isinstance(value, list) and len(value) > 0","tryCatchPattern":null,"preventionTips":["Check len(series) > 0 in caller loops","Reject empty parsed input early with a clear message","Single-element lists are valid; only empty ones raise"],"tags":["python","math","validation","value-error"],"backgroundTag":null,"analyzedSha":"f5988cc09713315817df6a7e327e258013a94440","analyzedAt":"2026-08-14T17:30:07.041Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}