Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Общие вопросы > Манипуляции с элементами списка


Автор: PyAlexey 29.9.2006, 17:12
Есть два списка:
Код

X = [1,2,3,4,5]
Y = [6,7,8,9,0]

Необходимо сделать следующий вложенный список:
Код

XY = [[1,6],[2,7],[3,8],[4,9],[5,0]]

То есть каждый подсписок должен состоять из двух элементов X и Y.
Как это сделать наиболее красиво и читаемо?

Автор: setq 29.9.2006, 17:20
XY = map(list, zip(X, Y)) ?


Нее. Некрасиво и нечитаемо. Ненавижу onelineры)

Автор: PyAlexey 29.9.2006, 17:31
setq, благодарю! Ведь знал, что в Питоне должно быть что-то подобное.

Автор: ser_gen 29.9.2006, 18:20
Можно еще проще:
Код

a=[1,2,3,4,5]

b=[6,7,8,9,10]

print zip(a,b)


[(1, 6), (2, 7), (3, 8), (4, 9), (5, 10)]

Автор: PyAlexey 29.9.2006, 18:29
ser_gen, здесь уже кортеж получается.

Автор: ser_gen 29.9.2006, 19:57
сорррррррри   smile  , мой косяк smile

Автор: dvska 1.10.2006, 22:15
По мне -- вот так читабельно:
Код
X = [1,2,3,4,5]
Y = [6,7,8,9,0]
XY = []
for n,x in enumerate(X):
    XY.append( [x, Y[n]] )
print XY

Автор: pythonwin 2.10.2006, 08:36
а если списки не равны по длине?

Автор: albertn 2.10.2006, 11:34
Цитата(setq @  29.9.2006,  17:20 Найти цитируемый пост)
Нее. Некрасиво и нечитаемо. Ненавижу onelineры)

Мне очень часто приходится обрабатывать списки, и код который получается в результате очень нечитабелен из-за обилия циклов. ИМХО обработка списков должна занимать как-можно меньше места в программе, чтобы визуально выделить основную часть кода, не вдаваясь в мелочи.

PS. Всегда мечтал, чтобы мелочам уделялось гораздо меньше места чем основному коду (на других языказ это больше как правило).

Автор: pythonwin 2.10.2006, 11:44
Цитата(albertn @  2.10.2006,  18:34 Найти цитируемый пост)
Мне очень часто приходится обрабатывать списки, и код который получается в результате очень нечитабелен из-за обилия циклов. ИМХО обработка списков должна занимать как-можно меньше места в программе, чтобы визуально выделить основную часть кода, не вдаваясь в мелочи.

PS. Всегда мечтал, чтобы мелочам уделялось гораздо меньше места чем основному коду (на других языказ это больше как правило). 

думаю, что это можно решить через:
  • функ-ое программирование
  • модульность
  • при помощи маленьких процедур, которые бы автоматизировали мелочи

Автор: albertn 2.10.2006, 12:02
Цитата(pythonwin @  2.10.2006,  11:44 Найти цитируемый пост)
функ-ое программирование

Использую как могу
Цитата(pythonwin @  2.10.2006,  11:44 Найти цитируемый пост)
модульность

В программе на 50 строчек смотрится глупо.
Цитата(pythonwin @  2.10.2006,  11:44 Найти цитируемый пост)
при помощи маленьких процедур, которые бы автоматизировали мелочи

Ну это только если повторяются части. А если повторяются, то естестно использую.

К тому-же чем мне нравится фп - его можно использовать в TAL, т.к. в нем одно выражение - одна строчка.

Автор: pythonwin 2.10.2006, 12:19
Цитата(albertn @  2.10.2006,  19:02 Найти цитируемый пост)

В программе на 50 строчек смотрится глупо.

у меня проги обычно в несколько раз больше smile

Автор: albertn 2.10.2006, 12:25
Цитата(pythonwin @ 2.10.2006,  12:19)
у меня проги обычно в несколько раз больше smile

Я практически все программы пишу на Zope, что само собой подразумевает модульность.
Для шаблонов страниц использую ZPT, которому редко что надо передавать в параметрах (в нем самом можно все указать)
По-этому проги выходят небольшими, и каждая отвечает только за определенное ей действие.
Исключение бывает если писать продукты. Но там само собой даже сотней строк не отделаешься. Но продукты писать приходистя очень редко.

Автор: pythonwin 2.10.2006, 12:30
ясно! smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)