Задать вопрос
@beckmiller

Поменяйте местами первую и вторую половины списка. Как упростить?

Привет ребята как можно решить этот вопрос без срезов помоги те пожалуйста.
a = []
n = int(input())

for i in range(n):
    new_n = int(input())
    a.append(new_n)
b = len(a) // 2
a = a[b:] + a[:b]
print(a)
  • Вопрос задан
  • 162 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
@deliro
Срезы в данном случае будут самыми простыми и быстрыми. Но для прикола можно так:

from collections import deque

d = deque(a)
d.rotate(len(a) // 2)
a = list(d)


Но это МЕДЛЕННЕЕ и не проще
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Вспоминается первый курс и паскаль :)

import random

n, rand_min, rand_max = 12, 1, 99
a, b, c = [], [], []

for i in range(0, n):
    a.append(random.randint(rand_min, rand_max))

print('Массив: %s' % a)

m = n // 2

if n % 2 > 0:
    k = 1
else:
    k = 0

for i in range(n - m - k, n):
    b.append(a[i])

for i in range(0, m):
    c.append(a[i])

print('Первая половина: %s' % c)
print('Вторая половина: %s' % b)

print('Перевернутые половины: %s' % (b + c))
Ответ написан
Ну, если нужно именно без срезов, то я бы предложил такой примитив:
>>> a = ['q','w','e','r','t','y']
>>> h = len(a)//2
>>> for i in range(h):
	a[i], a[h+i] = a[h+i], a[i]
>>> a
['r', 't', 'y', 'q', 'w', 'e']
Оговорка: раз Вы пишите "Поменяйте местами первую и вторую половины", очевидно, длина списа чётная (если возможна нечётная, нужно будет чуть усложнить).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
от 200 000 до 300 000 ₽
Greenway Global Новосибирск
от 150 000 ₽
Akronix Санкт-Петербург
от 150 000 до 200 000 ₽
02 февр. 2025, в 17:00
350 руб./в час
02 февр. 2025, в 15:37
750000 руб./за проект