πŸ”ͺ Как Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ список Π½Π° подсписки Π² Python: Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ΡΡŒ с использованиСм простого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° πŸ”ͺ

Как Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ список Π½Π° подсписки Π² Python?

Π’ Python Π΅ΡΡ‚ΡŒ нСсколько способов Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ список Π½Π° подсписки. Один ΠΈΠ· простых способов - ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ списка ΠΈ срСзы:

lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
chunk_size = 4
sublists = [lst[i:i+chunk_size] for i in range(0, len(lst), chunk_size)]
print(sublists)

Π’Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ список 'lst' Π½Π° подсписки, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 'chunk_size'. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π±ΡƒΠ΄Π΅Ρ‚ создано 3 подсписка: [1, 2, 3, 4], [5, 6, 7, 8] ΠΈ [9, 10].

Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ способ - ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ 'zip' с распаковкой:

lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
chunk_size = 4
sublists = [list(x) for x in zip(*[iter(lst)] * chunk_size)]
print(sublists)

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ список 'lst' Π½Π° подсписки Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 'chunk_size'. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ.

Оба способа ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ список Π½Π° подсписки Π² Python. Π’Ρ‹Π±ΠΈΡ€Π°ΠΉΡ‚Π΅ Ρ‚ΠΎΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Π°ΠΌ большС нравится ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для вашСй Π·Π°Π΄Π°Ρ‡ΠΈ.

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Как Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ список Π½Π° подсписки Π² Python

Π’ Python Π΅ΡΡ‚ΡŒ нСсколько способов Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ список Π½Π° подсписки. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я ΠΏΠΎΠΊΠ°ΠΆΡƒ Π²Π°ΠΌ нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΈ объясню, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ….

1. ИспользованиС срСзов

Π‘Ρ€Π΅Π·Ρ‹ - это ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ способ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ список Π½Π° подсписки. Для этого ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ срСзов, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ [start:end]. НапримСр, Ссли Ρƒ нас Π΅ΡΡ‚ΡŒ список чисСл:

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π½Π° подсписки Π΄Π»ΠΈΠ½ΠΎΠΉ 3 элСмСнта ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

sublists = [numbers[i:i+3] for i in range(0, len(numbers), 3)]
print(sublists)

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚:

[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10]]

2. ИспользованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ grouper

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ список Π½Π° подсписки фиксированного Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ grouper ΠΈΠ· модуля itertools. Π­Ρ‚Π° функция Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Π° ΠΈ ΡƒΠ΄ΠΎΠ±Π½Π° Π² использовании.

from itertools import zip_longest

def grouper(iterable, n, fillvalue=None):
    args = [iter(iterable)] * n
    return zip_longest(*args, fillvalue=fillvalue)

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
sublists = grouper(numbers, 3)
print(list(sublists))

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ:

[(1, 2, 3), (4, 5, 6), (7, 8, 9), (10, None, None)]

3. ИспользованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ chunks

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ список Π½Π° подсписки ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ chunks. Π­Ρ‚Π° функция Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅Π»ΠΈΡ‚ΡŒ список Π½Π° подсписки Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, Π½ΠΎ послСдний подсписок ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ мСньшСго Ρ€Π°Π·ΠΌΠ΅Ρ€Π°.

def chunks(lst, n):
    for i in range(0, len(lst), n):
        yield lst[i:i + n]

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
sublists = chunks(numbers, 3)
print(list(sublists))

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚:

[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10]]

4. ИспользованиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ numpy

Если Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с большими массивами Π΄Π°Π½Π½Ρ‹Ρ…, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ numpy для раздСлСния списка Π½Π° подсписки. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° numpy прСдоставляСт ΠΌΠΎΡ‰Π½Ρ‹Π΅ инструмСнты для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с массивами Π΄Π°Π½Π½Ρ‹Ρ….

import numpy as np

numbers = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
sublists = np.array_split(numbers, 4)
print(sublists)

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚:

[array([1, 2, 3]), array([4, 5, 6]), array([7, 8]), array([9, 10])]

5. ИспользованиС рСкурсии

Если Π²Ρ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ рСкурсивный ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΠ²Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для раздСлСния списка Π½Π° подсписки.

def split_list(lst, n):
    if len(lst) <= n:
        return [lst]
    else:
        return [lst[:n]] + split_list(lst[n:], n)

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
sublists = split_list(numbers, 3)
print(sublists)

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚:

[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10]]

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я ΠΏΠΎΠΊΠ°Π·Π°Π» Π²Π°ΠΌ нСсколько способов раздСлСния списка Π½Π° подсписки Π² Python. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π»ΡƒΡ‡ΡˆΠ΅ всСго ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для вашСй Π·Π°Π΄Π°Ρ‡ΠΈ. НадСюсь, эти ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π²Π°ΠΌ Π² вашСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π£Π΄Π°Ρ‡ΠΈ!

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

Python с нуля | Бписки Π² Python | ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ списков, сортировка списка, срСзы списков Π² Python

4.3 Подсписки списка. "ПоколСниС Python": курс для ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Ρ…. ΠšΡƒΡ€Ρ Stepik

12 Бписки ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ Π½ΠΈΠΌΠΈ Python

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

πŸ”₯ Как Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² список Python: простой способ с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΊΠΎΠ΄Π°

πŸ”’ Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ случайноС число Π² Python: простой способ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π°

πŸ” Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ поиск Π² спискС python: простой ΠΈ эффСктивный способ

πŸ”ͺ Как Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ список Π½Π° подсписки Π² Python: Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ΡΡŒ с использованиСм простого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° πŸ”ͺ

πŸ€– Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ Π±ΠΎΡ‚Π° Ρ‡Π΅Ρ€Π΅Π· ΠΏΠΈΡ‚ΠΎΠ½: ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ Π³Π°ΠΉΠ΄ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… πŸ“š

πŸ”§ Как ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π² спискС Python: простая инструкция с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ

πŸ”‘ Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ int список Π² ΠŸΠΈΡ‚ΠΎΠ½Π΅: простой Π³Π°ΠΉΠ΄