Задать вопрос
@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)
  • Вопрос задан
  • 164 просмотра
Подписаться 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']
Оговорка: раз Вы пишите "Поменяйте местами первую и вторую половины", очевидно, длина списа чётная (если возможна нечётная, нужно будет чуть усложнить).
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы
Greenway Global Новосибирск
от 150 000 ₽
SPA2099 Москва
До 100 000 ₽
HR Prime Москва
от 300 000 до 3 800 000 ₽