Найти - Пользователи
Полная версия: Вывести индексы чисел в список
Начало » Python для новичков » Вывести индексы чисел в список
1 2
gratiani
Во второй строке отображаются индексы чисел из первой строки. По всей видимости индексы должны начинаться с единицы. Как можно грамотно реализовать вывод второй строки?
 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
marvellik
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)
gratiani
marvellik
вообще то индексы начинаются с нуля как видно на примере.
Я знаю, что они с нуля начинаются. Как я понимаю, в данном примере отсчет начинается с единицы судя по задаче, потому-что если применять цикл, то он в итоге выходит за предел списка если его с нуля начинать, потому-что индекса 4 со сути нет уже в данном цикле.
marvellik
gratiani
Во второй строке отображаются индексы чисел из первой строки.
нет в первом списке элемента с индексом 4. что то тут не так. откуда задача?
terabayt
gratiani
for x in in0: in1.append(in0)
это не js! посмотрите как работают циклы в пайтоне
gratiani
Может я не так разъясняю что-то.
Вот эта задача:
http://codeforces.com/problemset/problem/136/A
py.user.next
gratiani
Как можно грамотно реализовать вывод второй строки?
Отнимай от индексов единицу. Есть ещё такой способ, когда в начале добавляется незначащий элемент, чтобы индексы сместились. Но лучше всего правильно индексы указывать.
gratiani
 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]))
Значения в словарях упорядочиваются по ключам в том порядке, в каком необходимо.
doza_and
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])
gratiani
doza_and
ни ключи ни значения с словарях никак не упорядочиваются.
Да, но присваиваются они последовательно в данном случае. И для решения задачи подошло.
http://codeforces.com/contest/136/submission/19848378
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB