TG Telegram Group & Channel
Библиотека питониста | Python, Django, Flask | United States America (US)
Create: Update:

📌 How to: продвинутые срезы в Python

Срезы — одна из самых мощных фич Python. Помимо базового [start:stop:step], они открывают массу возможностей при работе с данными.

Вот несколько продвинутых приёмов, которые вы точно захотите использовать:

1️⃣ Циклический сдвиг списка

def rotate(lst, k):
k %= len(lst)
return lst[-k:] + lst[:-k]

rotate([1, 2, 3, 4, 5], 2) # → [4, 5, 1, 2, 3]


2️⃣ Извлечение элементов по шаблону
days = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
days[::3] # → ['Mon', 'Thu']
days[5:] # → ['Sat', 'Sun']


3️⃣ Чётные и нечётные индексы
nums = list(range(10))
nums[::2] # чётные индексы → [0, 2, 4, 6, 8]
nums[1::2] # нечётные индексы → [1, 3, 5, 7, 9]


4️⃣ Массовое обновление по срезу
nums = [0]*10
nums[::2] = range(5) # → [0, 0, 1, 0, 2, 0, 3, 0, 4, 0]


5️⃣ Парсинг строки фиксированными блоками
data = "abcdefghij"
[data[i:i+2] for i in range(0, len(data), 2)]
# → ['ab', 'cd', 'ef', 'gh', 'ij']


6️⃣ Срезы в многомерных структурах
matrix = [[1,2,3], [4,5,6], [7,8,9]]
[row[1] for row in matrix] # → [2, 5, 8]
[matrix[i][i] for i in range(3)] # → [1, 5, 9]


7️⃣ Использование `slice()` вручную
s = slice(2, 8, 2)
lst = list(range(10))
lst[s] # → [2, 4, 6]


8️⃣ NumPy: срезы в многомерных массивах
import numpy as np
arr = np.arange(100).reshape(10, 10)
arr[-3:, -3:] # Подматрица 3×3 в правом нижнем углу


9️⃣ Pandas: срезы по строкам и условиям
import pandas as pd
df = pd.DataFrame({'A': [1,2,3,4], 'B': [10,20,30,40]})

df.iloc[:2] # первые 2 строки
df.loc[df['A'] > 2] # строки, где A > 2


🔟 Срезы в байтовых объектах
b = b'Hello, world!'
b[:5] # → b'Hello'

ba = bytearray([10, 20, 30, 40])
list(ba[1:3]) # → [20, 30]


⚡️ Срезы = читаемый, быстрый и питоничный способ работы с данными. Чем чаще используете — тем меньше кода и ошибок.

📎 Сохраните и поделитесь, если было полезно! Делитесь в комментариях, какими ещё приёмами пользуетесь.

Библиотека питониста #буст

📌 How to: продвинутые срезы в Python

Срезы — одна из самых мощных фич Python. Помимо базового [start:stop:step], они открывают массу возможностей при работе с данными.

Вот несколько продвинутых приёмов, которые вы точно захотите использовать:

1️⃣ Циклический сдвиг списка
def rotate(lst, k):
k %= len(lst)
return lst[-k:] + lst[:-k]

rotate([1, 2, 3, 4, 5], 2) # → [4, 5, 1, 2, 3]


2️⃣ Извлечение элементов по шаблону
days = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
days[::3] # → ['Mon', 'Thu']
days[5:] # → ['Sat', 'Sun']


3️⃣ Чётные и нечётные индексы
nums = list(range(10))
nums[::2] # чётные индексы → [0, 2, 4, 6, 8]
nums[1::2] # нечётные индексы → [1, 3, 5, 7, 9]


4️⃣ Массовое обновление по срезу
nums = [0]*10
nums[::2] = range(5) # → [0, 0, 1, 0, 2, 0, 3, 0, 4, 0]


5️⃣ Парсинг строки фиксированными блоками
data = "abcdefghij"
[data[i:i+2] for i in range(0, len(data), 2)]
# → ['ab', 'cd', 'ef', 'gh', 'ij']


6️⃣ Срезы в многомерных структурах
matrix = [[1,2,3], [4,5,6], [7,8,9]]
[row[1] for row in matrix] # → [2, 5, 8]
[matrix[i][i] for i in range(3)] # → [1, 5, 9]


7️⃣ Использование `slice()` вручную
s = slice(2, 8, 2)
lst = list(range(10))
lst[s] # → [2, 4, 6]


8️⃣ NumPy: срезы в многомерных массивах
import numpy as np
arr = np.arange(100).reshape(10, 10)
arr[-3:, -3:] # Подматрица 3×3 в правом нижнем углу


9️⃣ Pandas: срезы по строкам и условиям
import pandas as pd
df = pd.DataFrame({'A': [1,2,3,4], 'B': [10,20,30,40]})

df.iloc[:2] # первые 2 строки
df.loc[df['A'] > 2] # строки, где A > 2


🔟 Срезы в байтовых объектах
b = b'Hello, world!'
b[:5] # → b'Hello'

ba = bytearray([10, 20, 30, 40])
list(ba[1:3]) # → [20, 30]


⚡️ Срезы = читаемый, быстрый и питоничный способ работы с данными. Чем чаще используете — тем меньше кода и ошибок.

📎 Сохраните и поделитесь, если было полезно! Делитесь в комментариях, какими ещё приёмами пользуетесь.

Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM


>>Click here to continue<<

Библиотека питониста | Python, Django, Flask






Share with your best friend
VIEW MORE

United States America Popular Telegram Group (US)