У цій статті ми дізнаємося, як звести список списків за допомогою розуміння списку в Python.
Іноді під час роботи зі списком Python у нас може виникнути проблема, коли потрібно виконати зведення списку, тобто перетворити змішаний список на зведений. Це може мати програми в доменах, які використовують одновимірні списки як вхідні дані.
Давайте обговоримо певні способи виконання цього завдання.
приклад:
Input : [[1,3, 'geeks'], [4,5], [6, 'best']] Output : [1, 3, 'geeks', 4, 5, 6, 'best'] Explaination: Flattening convert a mixed list to a flattened one.>
Як звести список до окремих елементів у Python
Нижче наведено методи, які ми розглянемо в розділі «Як звести список списків у Python».
- Вирівняти список за допомогою розуміння списку
- Вирівняти список за допомогою сума()
- Вирівняти список за допомогою петля
- Вирівняти список за допомогою метод flatten().
- Вирівняти список за допомогою ланцюг() з isinstance()
- Вирівняти список за допомогою зменшити() функція
- Звести список за допомогою groupby
- Вирівняти список за допомогою itertools.chain.from_iterable()
- Зведення списку за допомогою рекурсії
1. Використання розуміння списку для зведення списку списків
Ось ми використовуємо розуміння списку щоб звести список від 2D до 1D.
Python3
res>=> [i>for> row>in> [[>1>,>3>,>'geeks'>], [>4>,>5>],> >[>6>,>'best'>]]>for> i>in> row]> print>(res)> |
git pull origin master
>
>
Вихід:
[1, 3, 'geeks', 4, 5, 6, 'best']>
Часова складність: O(n), де n – кількість елементів у списку
Допоміжний простір: O(n), де n – кількість елементів у списку
2. Використання функції sum() для зведення списку списків
Тут ми використовуємо функція sum(). у якому ми передали test_list як ітерований об’єкт як перший параметр, а другий параметр як порожній список, у якому він зберігає елемент.
Python3
test_list>=> [[>1>,>3>,>'gfg'>], [>4>,>5>], [>6>,>'best'>]]> test_list>=> sum>(test_list, [])> print>(test_list)> |
>
>
Вихід:
[1, 3, 'gfg', 4, 5, 6, 'best']>
Часова складність: O(n), де n – довжина списку test_list.
Допоміжний простір: Створюється O(n) додатковий простір розміром n, де n — кількість елементів у списку
3. За допомогою f або Перейти до Зведення списку списків
Для виконання цього завдання можна використовувати комбінацію вищезазначених функцій. У цьому випадку ми перевіряємо екземпляр списку та зводимо його, а решту елементів додаємо до списку грубим способом.
Python3
def> flatten(test_list):> >if> isinstance>(test_list,>list>):> >temp>=> []> >for> ele>in> test_list:> >temp.extend(flatten(ele))> >return> temp> >else>:> >return> [test_list]> # Initializing list> test_list>=> [>'gfg'>,>1>, [>5>,>6>,>'geeks'>],>67.4>, [>5>],>'best'>]> # Flatten List to individual elements> # using loop + isinstance()> res>=> flatten(test_list)> > # printing result> print> (>'The List after flattening : '> +> str>(res))> |
>
>
Вихід:
The List after flattening : [‘gfg’, 1, 5, 6, ‘geeks’, 67.4, 5, ‘best’]>
Часова складність: цієї функції дорівнює O(n), де n – загальна кількість елементів у вкладеному списку.
Складність простору: цієї функції також дорівнює O(n), оскільки новий тимчасовий список створюється для кожного рекурсивного виклику для збереження зведеного підсписку, а остаточний зведений список зберігається у змінній res.
4. Використання методу flatten() для зведення списку списків
панди flatten() повертає копію масиву, згорнутого в один вимір.
Python3
from> pandas.core.common>import> flatten> l>=> [[>1>,>3>,>'gfg'>], [>4>,>5>], [>6>,>'best'>]]> print>(>list>(flatten(l)))> |
>
>
Вихід:
java string.format
[1, 3, 'gfg', 4, 5, 6, 'best']>
5. У співати chain() з isinstance() щоб звести список списків
Це ще один спосіб виконання цього завдання. У цьому, котрий виконуємо завдання ітерації за допомогою ланцюг() і перевірка екземплярів списку , який здійснюється за допомогою isinstance() .
Python3
from> itertools>import> chain> # Initializing list> test_list>=> [>'gfg'>,>1>, [>5>,>6>,>'geeks'>],>67.4>, [>5>],>'best'>]> # Flatten List to individual elements> # using chain() + isinstance()> res>=> list>(chain(>*>[ele>if> isinstance>(ele,>list>)> >else> [ele]>for> ele>in> test_list]))> > # printing result> print> (>'The List after flattening : '> +> str>(res))> |
>
>
Вихід:
The List after flattening : [‘gfg’, 1, 5, 6, ‘geeks’, 67.4, 5, ‘best’]>
Часова складність: O(n)
Допоміжний простір: O(n)
6. Використання функції reduce() для зведення списку списків
The зменшити() функція визначена в functools модуль. Він постійно застосовує функцію з двох аргументів до заданої послідовності та повертає одне значення.
Python3
from> functools>import> reduce> > # Initializing list> test_list>=> [[>1>,>3>,>'gfg'>], [>4>,>5>], [>6>,>'best'>]]> > # Flatten List to individual elements> # using reduce()> res>=> reduce>(>lambda> x,y: x>+>y, test_list)> > # printing result> print> (>'The List after flattening : '> +> str>(res))> #This code is contributed by Edula Vinay Kumar Reddy> |
>
>
Вихід:
The List after Flattening : [1, 3, 'gfg', 4, 5, 6, 'best']>
Часова складність: O(n)
Допоміжний простір: O(n)
7. Використання groupby для зведення списку списків
Імпортуйте groupby модуль від itertools . Визначте test_list списків. Визначте змінну res як порожній список. Використовуйте вкладений цикл for, щоб перебирати елементи test_list.
Для кожного елемента перевірте, чи є він списком чи ні. Якщо це список, то повторіть кожен елемент списку та додайте його до змінної res. Якщо це не список, додайте елемент безпосередньо до змінної res.
Надрукуйте змінну res як зведений список.
Python3
підписка на azure
from> itertools>import> groupby> # Initializing list> test_list>=> [[>1>,>3>,>'gfg'>], [>4>,>5>], [>6>,>'best'>]]> # Flatten List to individual elements> # using groupby()> res>=> [i>for> j>in> test_list>for> i>in> (j>if> isinstance>(j,>list>)>else> [j])]> > # printing result> print> (>'The List after flattening : '> +> str>(res))> #This code is contributed by Rayudu.> |
>
>
Вихід:
The List after flattening : [1, 3, 'gfg', 4, 5, 6, 'best']>
Часова складність: Часова складність коду дорівнює O(n), де n – кількість елементів у вхідному списку. Вкладений цикл повторює кожен елемент списку вхідних даних рівно один раз.
Космічна складність: Просторова складність коду дорівнює O(n), де n – кількість елементів у вхідному списку. Змінна res використовується для зберігання зведеного списку, який може містити щонайбільше n елементів.
8. Використання itertools.chain.from_iterable() для зведення списку списків
У цьому прикладі код нижче використовує itertools.chain.from_iterable() метод зведення вкладеного списку.
Давайте розберемо код і пояснимо: наведений нижче код використовує `itertools.chain.from_iterable()` для зведення вкладеного списку (`nested_list`) в один список (`flattened_list`), а потім друкує результат.
Python3
from> itertools>import> chain> nested_list>=> [[>1>,>2>,>3>], [>4>,>5>], [>6>,>7>,>8>]]> flattened_list>=> list>(chain.from_iterable(nested_list))> print>(flattened_list)> |
>
>
Вихід:
[1, 2, 3, 4, 5, 6, 7, 8]>
Часова складність: O(n)
Допоміжний простір: O(n)
9. Використання рекурсії до Зведення списку списків
У цьому прикладі код нижче визначає функцію flatten_list, яка приймає вкладений список як вхідні дані та повертає зведений список з окремими елементами. Сплющування досягається за допомогою рекурсія .
Python3
def> flatten_list(lst):> >flat_list>=> []> >for> item>in> lst:> >if> isinstance>(item,>list>):> >flat_list.extend(flatten_list(item))> >else>:> >flat_list.append(item)> >return> flat_list> nested_list>=> [[>1>,>2>,>3>], [>4>, [>5>,>6>]], [>7>,>8>]]> flattened_list>=> flatten_list(nested_list)> print>(flattened_list)> |
>
>
Вихід:
[1, 2, 3, 4, 5, 6, 7, 8]>
Часова складність: O(n)
Допоміжний простір: O(n)
Ми розглянули 9 способів зведення списку списків. Зведення списку в Python використовується для перетворення списку вкладених списків в єдиний список. Ви можете скористатися будь-яким із наведених вище методів, щоб звести список відповідно до ваших вимог.
перевертання рядка в java
Схожі читання:
- Зведення пов’язаного списку
- Програма Python для зведення пов’язаного списку
- Python | Згруповане зведення списку