πͺ ΠΠ°ΠΊ ΡΠ°Π·Π±ΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ Π½Π° ΠΏΠΎΠ΄ΡΠΏΠΈΡΠΊΠΈ Π² 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. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ±ΡΠ°ΡΡ ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ Π²Π°ΡΠ΅ΠΉ Π·Π°Π΄Π°ΡΠΈ. ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠΈ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΏΠΎΠΌΠΎΠ³ΡΡ Π²Π°ΠΌ Π² Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ. Π£Π΄Π°ΡΠΈ!