Форум сайта python.su
0
Во второй строке отображаются индексы чисел из первой строки. По всей видимости индексы должны начинаться с единицы. Как можно грамотно реализовать вывод второй строки?
2 3 4 1
4 1 2 3
in0 = [int(x) for x in input().split()] in1 = [] for x in in0: in1.append(in0[x]) Traceback (most recent call last): File "<stdin>", line 2, in <module> IndexError: list index out of range
Отредактировано gratiani (Авг. 13, 2016 10:33:58)
Офлайн
73
gratianiвообще то индексы начинаются с нуля как видно на примере.
По всей видимости индексы должны начинаться с единицы
>>> in0 = [int(x) for x in input().split()] 2 3 4 1 >>> for x in range(len(in0)): print(x,end=' ') 0 1 2 3
in0 = [int(x) for x in input().split()] list_index = [x for x in range(len(in0))] print(list_index)
Отредактировано marvellik (Авг. 13, 2016 12:00:22)
Офлайн
0
marvellikЯ знаю, что они с нуля начинаются. Как я понимаю, в данном примере отсчет начинается с единицы судя по задаче, потому-что если применять цикл, то он в итоге выходит за предел списка если его с нуля начинать, потому-что индекса 4 со сути нет уже в данном цикле.
вообще то индексы начинаются с нуля как видно на примере.
Офлайн
73
gratianiнет в первом списке элемента с индексом 4. что то тут не так. откуда задача?
Во второй строке отображаются индексы чисел из первой строки.
Отредактировано marvellik (Авг. 13, 2016 12:05:24)
Офлайн
103
gratianiэто не js! посмотрите как работают циклы в пайтоне
for x in in0: in1.append(in0)
Офлайн
0
Может я не так разъясняю что-то.
Вот эта задача:
http://codeforces.com/problemset/problem/136/A
Офлайн
857
gratianiОтнимай от индексов единицу. Есть ещё такой способ, когда в начале добавляется незначащий элемент, чтобы индексы сместились. Но лучше всего правильно индексы указывать.
Как можно грамотно реализовать вывод второй строки?
Офлайн
0
in0 = int(input()) in1 = [int(x) for x in input().split()] in2 = [int(x) for x in range(1, len(in1)+1)] in3 = [] dict0 = {} for (k, v) in zip(in1, in2): dict0[k] = v in3 = list(dict0.values()) print(' '.join([str(x) for x in in3]))
Отредактировано gratiani (Авг. 13, 2016 14:10:37)
Офлайн
253
gratianiни ключи ни значения с словарях не имеют никакого гарантированного порядка.
Значения в словарях упорядочиваются по ключам в том порядке, в каком необходимо.
import numpy as np idata=np.array("3 4 2 1".split(),dtype='i')-1 print(str(np.arange(len(idata))[idata]+1)[1:-1])
Отредактировано doza_and (Авг. 13, 2016 14:40:32)
Офлайн
0
doza_andДа, но присваиваются они последовательно в данном случае. И для решения задачи подошло.
ни ключи ни значения с словарях никак не упорядочиваются.
Отредактировано gratiani (Авг. 13, 2016 14:23:48)
Офлайн