The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Релиз PHP 5.5.0"
Отправлено бедный буратино, 22-Июн-13 13:22 
> $in = 'fuckthemall aeouy yeah'; $letters = array('a','e','i','j','o','u','y');
> foreach (str_word_count($in, 1) as $word) $letters = array_intersect($letters, str_split(count_chars($word,
> 3), 1));
> Не знаю, кому как, а мне по читабельности этот код гораздо проще
> для понимания, чем примеры на Ruby и Python. В основном за
> счет простых и понятных названий функций и ключевых слов.

Мне эти слова не очень знакомы. В отличие от слов 'for', 'in', 'all' и 'if', которые я хорошо знаю года с 1987. И только из них состоит выражение на python.

Там есть и другие python-примеры:

reduce(lambda x,y:set(x)&set(y),words)&set(('a','e','i','o','u','y'))

words = 'fuckthemall aeouy yeah'.split()
result = reduce(set.intersection, words, set('aeiouy'))

words = 'fuckthemall aeouy yeah'.split(' ')
print filter(lambda c: all(c in word for word in words), 'aeiouy')


Указанный в начале темы вариант мне нравится именно тем, что можно и в голове прокрутить этот код, и понять, что он делает, и объяснить его младоразработчикам и девушкам, чтобы им было понятно, как работает (оно состоит из очень простых для анализа вещей: простое лучше сложного):

print [c for c in 'aeiouy']
['a', 'e', 'i', 'o', 'u', 'y']

понятно, что тут перебираются буквы, а  if ... ] - выводятся только буквы, когда соблюдается условие. дальше всё просто и понятно (возможно, для ещё большей наглядности, в исходном примере c in word следовало бы взять в скобки):

print [word for word in words]
['fuckthemall', 'aeouy', 'yeah']

print [('o' in word) for word in words]
[False, True, False]

print [('a' in word) for word in words]
[True, True, True]

и, соответственно, all возвращает True, если всё есть True, и False, если не всё.


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

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру