fix: preserve scalar items in list flatten

Fixes #5705
This commit is contained in:
jxxghp
2026-05-14 22:18:59 +08:00
parent f50773711e
commit 9128955bf9
2 changed files with 20 additions and 1 deletions

View File

@@ -50,7 +50,11 @@ class ListUtils:
if not any(isinstance(sublist, list) for sublist in nested_list):
return nested_list
return [item for sublist in nested_list if isinstance(sublist, list) for item in sublist]
return [
item
for sublist in nested_list
for item in (sublist if isinstance(sublist, list) else [sublist])
]
class SetUtils:

15
tests/test_structures.py Normal file
View File

@@ -0,0 +1,15 @@
from unittest import TestCase
from app.utils.structures import ListUtils
class ListUtilsTest(TestCase):
def test_flatten_keeps_scalar_items_in_mixed_list(self):
self.assertEqual(ListUtils.flatten([1, [2, 3], 4]), [1, 2, 3, 4])
def test_flatten_returns_plain_list_unchanged(self):
source = [1, 2, 3]
self.assertEqual(ListUtils.flatten(source), source)
def test_flatten_rejects_non_list_input(self):
self.assertEqual(ListUtils.flatten("1,2,3"), [])