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

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

Войти через центр авторизации
Похожие вопросы
от 150 000 до 250 000 руб.
YLab Тольятти
от 90 000 до 150 000 руб.
BestDoctor Москва
от 120 000 до 150 000 руб.
23 апр. 2019, в 13:06
1000 руб./в час
23 апр. 2019, в 12:58
5000 руб./за проект
23 апр. 2019, в 12:22
150 руб./за проект