У Python, щоб розділити список на підсписки на основі певного значення. Ідея полягає в тому, щоб перебирати вихідний список і групувати елементи в підсписки кожного разу, коли зустрічається вказане значення. Часто доводиться маніпулювати списками та обробляти їх, особливо при роботі з великими обсягами даних. Частою операцією є поділ списку на кілька підсписків відповідно до певного значення. Якщо ви хочете об’єднати компоненти або проаналізувати різні підмножини даних, ця процедура може бути корисною.
Способи розділення списків на списки на основі умови
Ось різні методи, які ми можемо використовувати, щоб розділити списки на списки на основі заданої умови.
- Використання простої ітерації
- Використання розуміння списку
- Використання петель for
- Використання рекурсії
- Використання Itertools
- Використання NumPy
Розділити список у Python за допомогою ітерації
в Python , ми розділимо список на списки за певним значенням за допомогою Проста ітерація . Код ініціалізує список і певне значення. Потім він розбиває список на підсписки на основі конкретного значення шляхом повторення кожного елемента списку.
Python3
test_list>=> [>1>,>4>,>5>,>6>,>4>,>5>,>6>,>5>,>4>]> print>(>'The original list : '> +> str>(test_list))> particular_value>=> 5> result>=> []> temp_list>=> []> for> i>in> test_list:> >if> i>=>=> particular_value:> >temp_list.append(i)> >result.append(temp_list)> >temp_list>=> []> >else>:> >temp_list.append(i)> result.append(temp_list)> print>(>'The list after splitting by a value : '> +> str>(result))> |
>
>
Вихід
The original list : [1, 4, 5, 6, 4, 5, 6, 5, 4] The list after splitting by a value : [[1, 4, 5], [6, 4, 5], [6, 5], [4]]>
Розділіть список Python на частини за допомогою розуміння списку
У Python ми розбиваємо список на списки за певним значенням за допомогою Розуміння списку . Цю задачу можна розв’язати двома частинами, у першій частині ми отримуємо список індексів, за яким потрібно виконати розбиття за допомогою перелічувати функція. І тоді ми можемо об’єднати значення відповідно до індексів за допомогою zip і нарізка списку.
Python3
test_list>=> [>1>,>4>,>5>,>6>,>4>,>5>,>6>,>5>,>4>]> print>(>'The original list : '> +> str>(test_list))> # using list comprehension Split list into lists by particular value> size>=> len>(test_list)> idx_list>=> [idx>+> 1> for> idx, val>in> >enumerate>(test_list)>if> val>=>=> 5>]> res>=> [test_list[i: j]>for> i, j>in> >zip>([>0>]>+> idx_list, idx_list>+> >([size]>if> idx_list[>->1>] !>=> size>else> []))]> print>(>'The list after splitting by a value : '> +> str>(res))> |
>
>
Вихід
The original list : [1, 4, 5, 6, 4, 5, 6, 5, 4] The list after splitting by a value : [[1, 4, 5], [6, 4, 5], [6, 5], [4]]>
Розділіть список у Python за допомогою циклів For
У Python ми розбиваємо список на списки за певним значенням за допомогою для циклу с. Код перетворює оригінальний лістинг у рядкове подання та замінює конкретну ціну роздільником (*). Потім він розділяє змінені рядок на роздільник, щоб отримати підрядки.
Python3
test_list>=> [>1>,>4>,>5>,>6>,>4>,>5>,>6>,>5>,>4>]> print>(>'The original list : '> +> str>(test_list))> x>=> list>(>map>(>str>, test_list))> x>=> ' '>.join(x)> x>=> x.replace(>'5'>,>'5*'>)> y>=> x.split(>'*'>)> res>=> []> for> i>in> y:> >i>=> i.strip()> >i>=> i.split(>' '>)> >b>=> []> >for> j>in> i:> >b.append(>int>(j))> >res.append(b)> print>(>'The list after splitting by a value : '> +> str>(res))> |
>
>
nfa до dfa
Вихід
The original list : [1, 4, 5, 6, 4, 5, 6, 5, 4] The list after splitting by a value : [[1, 4, 5], [6, 4, 5], [6, 5], [4]]>
Розділити список на кілька списків за допомогою рекурсії
У Python ми розбиваємо список на списки за певним значенням за допомогою Рекурсія . Код визначає рекурсивний функція називається split_list_recursive, який розбиває заданий список на підсписки щоразу, коли виникає певне значення. Він використовує рекурсію та два тимчасові списки (result і temp_list) для зберігання результуючих підсписків.
Python3
def> split_list_recursive(test_list, result, temp_list, particular_value):> >if> not> test_list:> >result.append(temp_list)> >return> >if> test_list[>0>]>=>=> particular_value:> >result.append(temp_list>+> [particular_value])> >split_list_recursive(test_list[>1>:], result, [], particular_value)> >else>:> >split_list_recursive(test_list[>1>:],> >result,> >temp_list>+> [test_list[>0>]],> >particular_value)> test_list>=> [>1>,>4>,>5>,>6>,>4>,>5>,>6>,>5>,>4>]> particular_value>=> 5> result>=> []> print>(>'The original list:'>, test_list)> split_list_recursive(test_list, result, [], particular_value)> print>(>'The list after splitting by value:'>, result)> |
>
>
Вихід
The original list: [1, 4, 5, 6, 4, 5, 6, 5, 4] The list after splitting by value: [[1, 4, 5], [6, 4, 5], [6, 5], [4]]>
Розділіть список у Python за допомогою Itertools
У Python ми розбиваємо список на списки за певним значенням за допомогою itertools . Код визначає функцію під назвою split_list, яка приймає список і значення як вхідні дані. Він використовує itertools.groupby() функція для групування послідовних елементів у список залежно від того, чи дорівнюють вони заданому значенню.
Python3
import> itertools> def> split_list(lst, val):> >return> [>list>(group)>for> k,> >group>in> >itertools.groupby(lst,>lambda> x: x>=>=>val)>if> not> k]> original_lst>=> [>1>,>4>,>5>,>6>,>4>,>5>,>6>,>5>,>4>]> split_lst>=> split_list(original_lst,>6>)> print>(>'The original list:'>, original_lst)> print>(>'The list after splitting by a value:'>, split_lst)> |
>
>
Вихід
The original list: [1, 4, 5, 6, 4, 5, 6, 5, 4] The list after splitting by a value: [[1, 4, 5], [4, 5], [5, 4]]>
Розділити список у Python за допомогою NumPy
У Python ми розділимо список на списки за певним значенням за допомогою Numpy. Код приймає список і певне значення як вхідні дані. Потім він перетворює список на a NumPy масив і знаходить індекси, де зустрічається певне значення.
Python3
import> numpy as np> test_list>=> [>1>,>4>,>5>,>6>,>4>,>5>,>6>,>5>,>4>]> particular_value>=> 5> arr>=> np.array(test_list)> idx>=> np.where(arr>=>=> particular_value)[>0>]> subarrays>=> np.split(arr, idx>+>1>)> result>=> [subarray.tolist()>for> subarray>in> subarrays>if> len>(subarray)>>0>]> print>(>'The original list:'>, test_list)> print>(>'The list after splitting by a value:'>, result)> |
>
>
Вихід
The original list: [1, 4, 5, 6, 4, 5, 6, 5, 4] The list after splitting by a value: [[1, 4, 5], [6, 4, 5], [6, 5], [4]>