diff --git a/CHANGELOG.md b/CHANGELOG.md
index 37487c8..b5264fd 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,11 @@ Features:
 - `Env.__repr__` and `Env.__str__` no longer display environment variables, to prevent accidental exfiltration of sensitive data ([#292](https://github.com/sloria/environs/issues/292)).
   Thanks [mro-rhansen2](https://github.com/mro-rhansen2) for the suggestion.
 
+Bug fixes:
+
+- Fix passing `None` as default to `env.list` ([#298](https://github.com/sloria/environs/issues/298)).
+  Thanks [lucas-bremond](https://github.com/lucas-bremond) for reporting.
+
 ## 10.2.0 (2024-01-09)
 
 Features:
diff --git a/environs/__init__.py b/environs/__init__.py
index b52774d..3fc16ca 100644
--- a/environs/__init__.py
+++ b/environs/__init__.py
@@ -201,7 +201,7 @@ def _make_list_field(*, subcast: typing.Optional[type], **kwargs) -> ma.fields.L
 def _preprocess_list(
     value: typing.Union[str, typing.Iterable], *, delimiter: str = ",", **kwargs
 ) -> typing.Iterable:
-    if ma.utils.is_iterable_but_not_string(value):
+    if ma.utils.is_iterable_but_not_string(value) or value is None:
         return value
     return typing.cast(str, value).split(delimiter) if value != "" else []
 

diff --git a/tests/test_environs.py b/tests/test_environs.py
index 95484e9..e3248eb 100644
--- a/tests/test_environs.py
+++ b/tests/test_environs.py
@@ -82,12 +82,16 @@ class TestCasting:
         set_env({"LIST": "1,2,3"})
         assert env.list("LIST") == ["1", "2", "3"]
 
-    def test_list_with_default_from_string(self, set_env, env):
+    def test_list_with_default_from_string(self, env):
         assert env.list("LIST", "1,2") == ["1", "2"]
 
-    def test_list_with_default_from_list(self, set_env, env):
+    def test_list_with_default_from_list(self, env):
         assert env.list("LIST", ["1"]) == ["1"]
 
+    # https://github.com/sloria/environs/issues/298
+    def test_list_with_default_none(self, env):
+        assert env.list("LIST", default=None) is None
+
     def test_list_with_subcast(self, set_env, env):
         set_env({"LIST": "1,2,3"})
         assert env.list("LIST", subcast=int) == [1, 2, 3]

Inconsistent behavior with `env.list`
When `MY_ENV_VAR` is __not__ defined,

```py
env.int("MY_ENV_VAR", default=None)
```

returns `None` (as expected), but:

```py
env.list("MY_ENV_VAR", subcast=str, default=None)
```

yields the following Exception:

```py
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.10/site-packages/environs/__init__.py", line 122, in method
    value = preprocess(value, **preprocess_kwargs)
  File "/usr/local/lib/python3.10/site-packages/environs/__init__.py", line 206, in _preprocess_list
    return typing.cast(str, value).split(delimiter) if value != "" else []
AttributeError: 'NoneType' object has no attribute 'split'
```

I believe the second example should return `None` as well.

Thoughts?
tests/test_environs.py::TestCasting::test_list_with_default_none
tests/test_environs.py::TestCasting::test_call tests/test_environs.py::TestCasting::test_call_with_default tests/test_environs.py::TestCasting::test_basic tests/test_environs.py::TestCasting::test_empty_str tests/test_environs.py::TestCasting::test_int_cast tests/test_environs.py::TestCasting::test_invalid_int tests/test_environs.py::TestCasting::test_float_cast tests/test_environs.py::TestCasting::test_list_cast tests/test_environs.py::TestCasting::test_list_with_default_from_string tests/test_environs.py::TestCasting::test_list_with_default_from_list tests/test_environs.py::TestCasting::test_list_with_subcast tests/test_environs.py::TestCasting::test_list_with_empty_env_and_subcast tests/test_environs.py::TestCasting::test_bool tests/test_environs.py::TestCasting::test_list_with_spaces tests/test_environs.py::TestCasting::test_list_with_spaces_as_delimiter tests/test_environs.py::TestCasting::test_dict tests/test_environs.py::TestCasting::test_dict_with_spaces_as_delimiter tests/test_environs.py::TestCasting::test_dict_with_subcast_values tests/test_environs.py::TestCasting::test_dict_without_subcast_keys tests/test_environs.py::TestCasting::test_dict_with_subcast_keys tests/test_environs.py::TestCasting::test_dict_with_subcast_key_deprecated tests/test_environs.py::TestCasting::test_custom_subcast_list tests/test_environs.py::TestCasting::test_custom_subcast_keys_values tests/test_environs.py::TestCasting::test_dict_with_default_from_string tests/test_environs.py::TestCasting::test_dict_with_default_from_dict tests/test_environs.py::TestCasting::test_dict_with_equal tests/test_environs.py::TestCasting::test_decimal_cast tests/test_environs.py::TestCasting::test_missing_raises_error tests/test_environs.py::TestCasting::test_default_set tests/test_environs.py::TestCasting::test_json_cast tests/test_environs.py::TestCasting::test_invalid_json_raises_error tests/test_environs.py::TestCasting::test_json_default tests/test_environs.py::TestCasting::test_datetime_cast tests/test_environs.py::TestCasting::test_date_cast tests/test_environs.py::TestCasting::test_timedelta_cast tests/test_environs.py::TestCasting::test_time_cast tests/test_environs.py::TestCasting::test_uuid_cast tests/test_environs.py::TestCasting::test_url_cast tests/test_environs.py::TestCasting::test_url_db_cast tests/test_environs.py::TestCasting::test_path_cast tests/test_environs.py::TestCasting::test_path_default_value tests/test_environs.py::TestCasting::test_log_level_cast tests/test_environs.py::TestCasting::test_invalid_log_level tests/test_environs.py::TestCasting::test_invalid_url[foo] tests/test_environs.py::TestCasting::test_invalid_url[42] tests/test_environs.py::TestCasting::test_invalid_url[foo@bar] tests/test_environs.py::TestCasting::test_enum_cast tests/test_environs.py::TestCasting::test_enum_cast_ignore_case tests/test_environs.py::TestCasting::test_invalid_enum tests/test_environs.py::TestCasting::test_invalid_enum_ignore_case tests/test_environs.py::TestEnvFileReading::test_read_env tests/test_environs.py::TestEnvFileReading::test_read_env_returns_false_if_file_not_found tests/test_environs.py::TestEnvFileReading::test_read_env_recurse tests/test_environs.py::TestEnvFileReading::test_read_env_non_recurse tests/test_environs.py::TestEnvFileReading::test_read_env_recurse_from_subfolder tests/test_environs.py::TestEnvFileReading::test_read_env_recurse_start_from_subfolder[.custom.env] tests/test_environs.py::TestEnvFileReading::test_read_env_recurse_start_from_subfolder[path1] tests/test_environs.py::TestEnvFileReading::test_read_env_directory tests/test_environs.py::TestValidation::test_can_add_validator tests/test_environs.py::TestValidation::test_can_add_marshmallow_validator tests/test_environs.py::TestValidation::test_validator_can_raise_enverror tests/test_environs.py::TestValidation::test_failed_vars_are_not_serialized tests/test_environs.py::TestCustomTypes::test_add_parser tests/test_environs.py::TestCustomTypes::test_cannot_override_built_in_parser tests/test_environs.py::TestCustomTypes::test_parser_for tests/test_environs.py::TestCustomTypes::test_parser_function_can_take_extra_arguments tests/test_environs.py::TestCustomTypes::test_add_parser_from_field tests/test_environs.py::TestDumping::test_dump tests/test_environs.py::TestDumping::test_env_with_custom_parser tests/test_environs.py::test_repr tests/test_environs.py::test_str tests/test_environs.py::test_env_isolation tests/test_environs.py::TestPrefix::test_prefixed tests/test_environs.py::TestPrefix::test_dump_with_prefixed tests/test_environs.py::TestPrefix::test_error_message_for_prefixed_var tests/test_environs.py::TestNestedPrefix::test_nested_prefixed tests/test_environs.py::TestNestedPrefix::test_dump_with_nested_prefixed tests/test_environs.py::TestFailedNestedPrefix::test_failed_nested_prefixed tests/test_environs.py::TestFailedNestedPrefix::test_failed_dump_with_nested_prefixed tests/test_environs.py::TestDjango::test_dj_db_url tests/test_environs.py::TestDjango::test_dj_db_url_passes_kwargs tests/test_environs.py::TestDjango::test_dj_email_url tests/test_environs.py::TestDjango::test_dj_cache_url tests/test_environs.py::TestDeferredValidation::test_valid tests/test_environs.py::TestDeferredValidation::test_validation tests/test_environs.py::TestDeferredValidation::test_deferred_required_validation tests/test_environs.py::TestDeferredValidation::test_cannot_add_after_seal tests/test_environs.py::TestDeferredValidation::test_custom_parser_not_called_after_seal tests/test_environs.py::TestDeferredValidation::test_dj_db_url_with_deferred_validation_missing tests/test_environs.py::TestDeferredValidation::test_dj_db_url_with_deferred_validation_invalid tests/test_environs.py::TestDeferredValidation::test_dj_email_url_with_deferred_validation_missing tests/test_environs.py::TestDeferredValidation::test_dj_cache_url_with_deferred_validation_missing tests/test_environs.py::TestDeferredValidation::test_dj_cache_url_with_deferred_validation_invalid tests/test_environs.py::TestDeferredValidation::test_custom_parser_with_deferred_validation_missing tests/test_environs.py::TestDeferredValidation::test_custom_parser_with_deferred_validation_invalid tests/test_environs.py::TestExpandVars::test_full_expand_vars tests/test_environs.py::TestExpandVars::test_multiple_expands tests/test_environs.py::TestExpandVars::test_recursive_expands tests/test_environs.py::TestExpandVars::test_default_expands tests/test_environs.py::TestExpandVars::test_escaped_expand tests/test_environs.py::TestExpandVars::test_composite_types