Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> инструкция "if" для проверки длины списка, записать это решение в одну строку 
V
    Опции темы
pythonwin
  Дата 23.8.2006, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 14
Всего: 36



может помочь?

есть список объектов:
Код

class Tuple1:
    s1=-1
    s2=''
    def __init__(self, s1, s2):
        self.s1=s1
        self.s2=s2
l=[Tuple1(1,'1'), Tuple1(2,'2'), Tuple1(3,'3'), Tuple1(4,'4')]


нужно получить список [(целое число, строка)], если же список объектов пустой 
Код
l=[]
, то тогда список кортежей должен быть 
Код
l1=[(-1, '-1')]


проблему вроде решил

Код

l1=map(lambda x: (x.s1, x.s2), l)
if len(l1)==0: l1=[(-1, '-1')]
, но хотелось бы записать это решение в одну строку.  smile 
PM WWW GTalk Jabber   Вверх
albertn
Дата 23.8.2006, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 368
Регистрация: 17.7.2006
Где: г. Ставрополь

Репутация: 30
Всего: 34



В случае чего добавить .... не является естественным. В принципе это можно записать в одну строку, но это не будет логичным.

Это сообщение отредактировал(а) albertn - 23.8.2006, 12:44
PM WWW ICQ   Вверх
pythonwin
Дата 23.8.2006, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 14
Всего: 36



Цитата(albertn @  23.8.2006,  19:43 Найти цитируемый пост)
В принципе это можно записать в одну строку, но это не будет логичным.

не понял.  smile 
PM WWW GTalk Jabber   Вверх
albertn
Дата 23.8.2006, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 368
Регистрация: 17.7.2006
Где: г. Ставрополь

Репутация: 30
Всего: 34



Цитата(pythonwin @ 23.8.2006,  12:47)
не понял.  smile

В смысле придется извращаться (писать код не естественным образом). И эти извращения врятли будут оправданы сокращением количества строк. Почти также глупо, как запись через точку с запятой, и даже хуже.
PM WWW ICQ   Вверх
pythonwin
Дата 23.8.2006, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 14
Всего: 36



Цитата(albertn @  23.8.2006,  20:01 Найти цитируемый пост)

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

ясно! тогда оставлю как есть!


PM WWW GTalk Jabber   Вверх
Artemios
Дата 23.8.2006, 23:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 405
Регистрация: 14.8.2006
Где: Саратов, Россия

Репутация: 18
Всего: 50



Код

ll = map(lambda x: (x.s1, x.s2), l) or [(-1, '-1')]


или

Код

ll = [(x.s1, x.s2) for x in l] or [(-1, '-1')]


 smile ну да, изврат. smile короткозамкнутое логическое выражение.

Это сообщение отредактировал(а) Artemios - 24.8.2006, 00:16


--------------------
fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ]
PM MAIL   Вверх
pythonwin
Дата 24.8.2006, 07:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 14
Всего: 36



Artemios, а какое работает быстрее?

PM WWW GTalk Jabber   Вверх
Artemios
Дата 24.8.2006, 07:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 405
Регистрация: 14.8.2006
Где: Саратов, Россия

Репутация: 18
Всего: 50



Цитата(pythonwin @  24.8.2006,  07:14 Найти цитируемый пост)
Artemios, а какое работает быстрее?


... Честно говоря, не знаю smile Но второй вариант - по более "современному" синтаксису Питона...


--------------------
fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ]
PM MAIL   Вверх
pythonwin
Дата 24.8.2006, 08:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 14
Всего: 36



Artemios, спасибо!
PM WWW GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0466 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.