Форум программистов, компьютерный форум, киберфорум
Наши страницы
Python
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/22: Рейтинг темы: голосов - 22, средняя оценка - 4.55
victory19933
2 / 2 / 1
Регистрация: 24.04.2011
Сообщений: 70
1

Python. Сложение элементов 2-х списков.(см. мое реш внутри)

07.03.2012, 22:15. Просмотров 4111. Ответов 11
Метки нет (Все метки)

вот мой вариант, неработающий...К тому же решен не в общем виде.
Я новичок, помогите немного..
Python
1
2
3
4
5
6
7
s=[]
x=[1,2]
y=[2,3]
def add(x,y):
    for i in range(1,len(x)):
    s[i]=x[i]+y[i]
    return s[i]
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.03.2012, 22:15
Ответы с готовыми решениями:

Сложение двух списков
a= b= if len(a)>len(b): * **while len(a)!=len(b): * * * * b.append(0)...

Список: сложение двух списков, их рандомная пересортировка и красивый вывод
Здравствуйте! Огромное спасибо за столь быструю помощь с предыдущим вопросом!...

Неожиданное поведение списков внутри классов
Здравствуйте! Python только начинаю учить, так что вопрос может показаться...

Функция сложение на Python! Через def, while и if
Есть вот такой код! def print_num(x , y): while True: if...

Python. Использование потоков внутри класса
Задача: Создать модуль/модуль-класс для работы с последовательным портом. В...

11
Owl_Man
2 / 2 / 0
Регистрация: 05.12.2009
Сообщений: 4
08.03.2012, 01:16 2
Вы индексируете списки x и y не с 0, как это принято в python, а с 1. И добавлять элементы в список s следует с помощью метода append(), иначе будет выдавать ошибку "выход за пределы списка". То есть, код должен выглядеть так: (при условии, что входные массивы одинакового размера)
Python
1
2
3
4
5
6
7
8
9
10
s = []
x = [1,2,3]
y = [4,5,6]
def add(x,y):
    for i in range(len(x)): #если в range() задан только один аргумент, отсчёт будет от 0
        s.append(x[i] + y[i])
 
>>> add(x,y)
>>> s
[5,7,9]
1
Nameless One
Эксперт С++
5788 / 3437 / 351
Регистрация: 08.02.2010
Сообщений: 7,448
08.03.2012, 05:19 3
Лучший ответ Сообщение было отмечено как решение

Решение

Python
1
2
3
4
5
6
>>> def add(l1, l2):
...     return [i1 + i2 for i1, i2 in zip(l1, l2)]
... 
>>> add([1,2,3],[4,5,6])
[5, 7, 9]
>>>
4
victory19933
2 / 2 / 1
Регистрация: 24.04.2011
Сообщений: 70
09.03.2012, 00:13  [ТС] 4
написала в зависимости от длины списков.
Почему ругается elif и следущий else????????????
Код
def a3_1(a,b):
	res=[]
	if a==[]:
		return b
	elif b==[]:
		return a
	elif a==[] and b==[]:
		return []
	else:
		if len(a)>len(b):
			for i in range (len(b)):
				res.append(a[i]+b[i])
			for i in range (len(b),len(a)):
				res.append(a[i])
		return res
		elif len(a)==len(b):
			for i in range (len(b)):
				res.append(a[i]+b[i])
		return res
		else: ##len(b)>len(a):
			for i in range (len(a)):
				res.append(a[i]+b[i])
			for i in range (len(a),len(b)):
				res.append(b[i])
		return res
		 
	       
def a3_2(a):
	res=[]
	for i in range (len(a)):
		if a[i]!="":
			res.append (a[i])
		else:
			continue
	return res
0
Nameless One
Эксперт С++
5788 / 3437 / 351
Регистрация: 08.02.2010
Сообщений: 7,448
09.03.2012, 11:27 5
Если нужно, чтобы функция обрабатывала длинейший список, то можно сделать так (аналогично тому, что короткий список дополняется справа нулями):
Python
1
2
3
4
5
6
7
8
9
10
11
12
>>> def add_longest(l1, l2):
...     return [i1 + i2 for i1, i2 in zip(l1, l2)] + (l1[len(l2):] if len(l1) > len(l2) else l2[len(l1):])
... 
>>> add_longest([1,2,3,4],[5,6,7])
[6, 8, 10, 4]
>>> add_longest([1,2],[5,6,7,8,9,10])
[6, 8, 7, 8, 9, 10]
>>> add_longest([1,2,3],[4,5,6])
[5, 7, 9]
>>> add_longest([],[])
[]
>>>
Цитата Сообщение от victory19933 Посмотреть сообщение
Почему ругается elif и следущий else?
потому что return неправильно выровнен
1
victory19933
2 / 2 / 1
Регистрация: 24.04.2011
Сообщений: 70
09.03.2012, 14:23  [ТС] 6
спасибо за ваш вариант, но мне все равно мой более понятен, поэтому хочу его добить, если так можно сказать. Я вообще пока не поняла почему настолько важно выравнивание.И как тогда надо выровнять?
0
Nameless One
Эксперт С++
5788 / 3437 / 351
Регистрация: 08.02.2010
Сообщений: 7,448
09.03.2012, 14:26 7
Цитата Сообщение от victory19933 Посмотреть сообщение
Я вообще пока не поняла почему настолько важно выравнивание
потому, что в питоне оно определяет границы блоков кода
Цитата Сообщение от victory19933 Посмотреть сообщение
.И как тогда надо выровнять?
15, 19 и 25 строки передвинь на один уровень вправо
0
victory19933
2 / 2 / 1
Регистрация: 24.04.2011
Сообщений: 70
09.03.2012, 14:52  [ТС] 8
все равно ошибка...
Error: Inconsistent indentation detected!1)...2)....
а можно где-нибудь посмотреть как правильно оформлять эти конструкции?

Добавлено через 9 минут
странный язык какой-то...
закрыла, открыла заново, ВСЕ РАБОТАЕТ!))
спасибо!
0
Nameless One
Эксперт С++
5788 / 3437 / 351
Регистрация: 08.02.2010
Сообщений: 7,448
09.03.2012, 14:54 9
Цитата Сообщение от victory19933 Посмотреть сообщение
странный язык какой-то...
закрыла, открыла заново, ВСЕ РАБОТАЕТ!))
спасибо!
это редактор у тебя странный. Могу посоветовать в настройках указать, чтобы вместо табуляций использовались пробелы

Добавлено через 42 секунды
Цитата Сообщение от victory19933 Посмотреть сообщение
а можно где-нибудь посмотреть как правильно оформлять эти конструкции?
смотри встроенную справку, которая распространяется вместе с интерпретатором
0
victory19933
2 / 2 / 1
Регистрация: 24.04.2011
Сообщений: 70
09.03.2012, 15:08  [ТС] 10
ок.
а какая разница использования tab'а и пробела?
интерпретатор 2.7.2 у меня.
0
Nameless One
Эксперт С++
5788 / 3437 / 351
Регистрация: 08.02.2010
Сообщений: 7,448
09.03.2012, 15:11 11
Цитата Сообщение от victory19933 Посмотреть сообщение
а какая разница использования tab'а и пробела?
размер tab'ов может быть различным. Вот по выравниванию и табам: http://www.python.org/dev/peps/pep-0008/
1
accept
4833 / 3255 / 455
Регистрация: 10.12.2008
Сообщений: 10,569
10.03.2012, 04:48 12
Python
1
2
3
4
5
6
7
>>> import operator
>>> def f(a, b):
...   return map(operator.add, a, b)
... 
>>> f([1, 2, 3], [4, 5, 6])
[5, 7, 9]
>>>
для списков одинаковой длины
0
10.03.2012, 04:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.03.2012, 04:48

Изменение последовательности внутри цикла for, мощность Си-шного for в python
Здравствуйте. Пишу калькулятор на python. Имеется список с операторами ,...

Сложение элементов линейных односвязных списков
Текст задания: Написать программу, формирующую два списка. Получить новый...

попарное сложение элементов списков [ТурбоПролог]
Помогите пожалуйста сделать задание :) Необходимо сделать попарное сложение...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru