Форум сайта python.su
Совсем недавно начал разбираться в python, поэтому не судите строго.
К примеру есть два списка:
a=[u'каждый', u'охотник', u'желает', u'знать', u'где', u'сидит', u'фазан']
b=[u'красный', u'оранжевый', u'желтый', u'зеленый', u'голубой', u'синий', u'фиолетовый']
for i in range(len(a)):
print a[i], c[i]
...
каждый красный
охотник оранжевый
желает желтый
знать зеленый
где голубой
сидит синий
фазан фиолетовый
1) 2)
каждый красный каждый красный
оранжевый охотник
желтый желает
зеленый знать
голубой где
синий сидит
фиолетовый фазан
Офлайн
C 1 вариантом можно пойти через двойной цикл.второй цикл можно оформить как:
for i in a:
print i,
for j in b:
print j
Офлайн
Подскажите, а есть метод подобный extend(t), который не добавляет, а перемещает
последовательность в конец списка, подобно такой конструкции:
>>> l=[1,2,3,4,5,6]
>>>l
[1, 2, 3, 4, 5, 6]
>>> l.extend(l[0:3])
>>> del l[0:3]
>>> l
[4, 5, 6, 1, 2, 3]
Офлайн
NN, можете использовать срез:
>>> l=[1,2,3,4,5,6]
>>> l
[1, 2, 3, 4, 5, 6]
>>> new_l = l[3:] + l[:3]
>>> new_l
[4, 5, 6, 1, 2, 3]
>>>
Офлайн
как сложить элементы последовательностей разной длины ? например чтобы получилось
Офлайн
>>> def f(la, lb):
... shortest, longest = la, lb
... if shortest > lb:
... shortest, longest = longest, shortest
... return [i + j for i, j in zip(shortest + [0] * (len(longest) - len(shortest)), longest)]
...
>>> la, lb
([1], [5, 4, 6])
>>> f(la, lb)
[6, 4, 6]
>>> f(lb, la)
[6, 4, 6]
>>> f([1, 2, 3], [1, 2, 3])
[2, 4, 6]
>>>
Отредактировано (Ноя. 14, 2010 23:08:14)
Офлайн
спасибо:)
Офлайн
return [i + j for i, j in zip(shortest + * (len(longest) - len(shortest)), longest)]
можете эту строчку поподробнее объяснить…i+j for i,j in zip(промежуток понятности:),longest*зачем вот это последнее лонгест?*)
Офлайн
py.user.nextУ вас ошибка в коде. Списки так не сравниваются по длине.>>> def f(la, lb):
>>> f([1,2,3], [4,5])
[5, 7]
>>> map(lambda x,y: (x or 0) + (y or 0), [1,2,3], [4,5])
[5, 7, 3]
Офлайн
thanks, Ed
def f(la, lb):
shortest, longest = la, lb
if len(shortest) > len(longest):
shortest, longest = longest, shortest
return [i + j for i, j in zip(shortest + [0] * (len(longest) - len(shortest)), longest)]
>>> map(lambda x,y: (x or 0) + (y or 0), [1,2,3], [4,5])
<map object at 0xb6ffe94c>
>>> list(map(lambda x,y: (x or 0) + (y or 0), [1,2,3], [4,5]))
[5, 7]
>>>
bgalinaпоследняя longest - это второй аргумент zip
return [i + j for i, j in zip(shortest + * (len(longest) - len(shortest)), longest)]
можете эту строчку поподробнее объяснить…i+j for i,j in zip(промежуток понятностиsmile,longest*зачем вот это последнее лонгест?*)
Офлайн