Форум сайта python.su
0
Имеется два списка, в которые вводятся данные. Эти два списка с числом элементов n нужно разбить на два новых списка с числом элементов m=2*(n-1). А элементы должны стоять в последовательности:
если индекс элемента четный(нового списка) то берется элемент (из имеющегося списка) с индексом j=l/2, если не четный - j
l+1)/2 где l-номер элемента.
Я сделал так, ответ не правильный т.к. в конце масива появляются числа которые должны быть в начале:
e = [] I = [] n = input('n=') i = 0 while i < n: i+=1 Ii = input('I=') ei = input('e=') e.insert(n, Ii) I.insert(n, ei) el = [] Il = [] w = [] l=0 m = 2*(n-1) # Количество элементов нового списка while l < m: l+=1 if l%2 == 0: j = l/2 ej = e[j] Ij = I[j] el.insert(j, ej) Il.insert(j, Ij) else: j = (l+1)/2 ej = e[j] Ij = I[j] el.insert(j, ej) Il.insert(j, Ij) print("e =",e) print('I=',I) print('el=',el) print('Il=',Il)
>>> n=5 I=1 e=1 I=2 e=2 I=3 e=3 I=4 e=4 I=5 e=5 ('e =', [1, 2, 3, 4, 5]) ('I=', [1, 2, 3, 4, 5]) ('el=', [2, 2, 3, 4, 5, 5, 4, 3]) ('Il=', [2, 2, 3, 4, 5, 5, 4, 3]) >>>
[2, 2, 3, 3, 4, 4, 5, 5]
Отредактировано jeka7 (Окт. 24, 2012 15:59:04)
Офлайн
0
если не четный - j ровно (l+1)/2 (это где смайлик выскочил)
Офлайн
25
Если я правильно понял условие задачи то как-то так:
def console_read_int(prompt): return int(raw_input(prompt).strip()) def read_list(prompt_fmt, n): return [console_read_int(prompt_fmt.format(i)) for i in xrange(n)] n = console_read_int('n=') both_lst = zip(read_list('I[{}]=', n), read_list('e[{}]=', n)) m = 2 * (n - 1) el, Il = [], [] for i in xrange(m): j = ((i + 1) / 2) if (i % 2) else (i / 2) I, e = both_lst[j] Il.append(I) el.append(e) print el print Il
Офлайн
0
Спасибо ,s0rg , все правильно понял! Все отлично работает!
Офлайн
0
s0rgКак сделать чтоб можно было вводить дробные числа в список???
def console_read_int(prompt):
return int(raw_input(prompt).strip())
def read_list(prompt_fmt, n):
return
n = console_read_int('n=')
both_lst = zip(read_list('I=', n), read_list('e=', n))
m = 2 * (n - 1)
el, Il = ,
for i in xrange(m):
j = ((i + 1) / 2) if (i % 2) else (i / 2)
I, e = both_lst
Il.append(I)
el.append(e)
print el
print Il
Отредактировано jeka7 (Окт. 24, 2012 21:17:29)
Офлайн
25
jeka7Заменить функцию:
Как сделать чтоб можно было вводить дробные числа в список???
def read_list(prompt_fmt, n): return [float(raw_input(prompt_fmt.format(i).strip()) for i in xrange(n)]
Офлайн
0
Спасибо, работает, но не хватала одной скобки
return [float(raw_input(prompt_fmt.format(i).strip())) for i in xrange(n)]
Офлайн