Если вы используете MySQL, существует метод REGEXP, который вы можете использовать ...
http://dev.mysql.com/doc/refman/5.1/en/ regexp.html # operator_regexp
Итак, вы должны использовать:
SELECT * FROM `shirts` WHERE `colors` REGEXP '\b1\b'
Я думал, что процесс освоения Python происходит примерно так:
Поймите самоанализ
dir ()
эквивалент type ()
dis
, чтобы увидеть, как работают различные языковые конструкции Выполнение этих действий
Не совсем то, о чем вы просите, но я думаю, что это хороший совет.
Выучите другой язык, неважно какой. У каждого языка есть свои идеи и соглашения, на которых вы можете учиться. Узнайте о различиях в языках и, что более важно, , почему
они разные. Попробуйте чисто функциональный язык, такой как Haskell, и убедитесь в некоторых преимуществах (и проблемах) функций, свободных от побочных эффектов. Посмотрите, как вы можете применить к Python некоторые вещи, которые вы узнали из других языков.
Я дам вам самый простой и самый эффективный совет, который, я думаю, вам может дать любой: код .
Вы можете лучше использовать язык (что подразумевает его понимание) только с помощью кодирования . Вы должны активно получать удовольствие от программирования, вдохновляться, задавать вопросы и самостоятельно находить ответы.
Есть лишний час? Напишите код, который перевернет строку, и найдите наиболее оптимальное решение. Свободный вечер? Почему бы не попробовать почистить веб-страницы. Прочтите код других людей. Посмотрите, как они поступают. Спросите себя, что бы вы сделали.
Когда мне скучно за компьютером, я открываю IDE и code-storm. Я записываю идеи, которые кажутся интересными и сложными. Сокращатель URL-адресов? Конечно, я могу это сделать. О, я научился преобразовывать числа из одной базы в другую в качестве побочного эффекта!
Это действительно независимо от вашего уровня навыков. Вы никогда не перестанете учиться. Активно кодируя в свободное время, вы без особых дополнительных усилий придете к пониманию языка и, в конечном итоге, станете гуру. Вы будете накапливать знания, код многократного использования и запоминать идиомы.
Вы видели книгу « Биоинформатическое программирование с использованием Python »? Похоже, вы точно являетесь членом его фокус-группы.
Сначала я сам изучил Python за лето, просто прочитав учебник на сайте Python (к сожалению, я не могу найти это больше, поэтому я не могу разместить ссылку).
Позже меня научили питону на одном из первых курсов в университете. Следующим летом я практиковался с PythonChallenge и с проблемами из Google Code Jam . Решение этих проблем помогает как с алгоритмической точки зрения, так и с точки зрения изучение того, что Python может делать, а также как манипулировать им, чтобы максимально использовать возможности Python.
По тем же причинам я слышал, что код гольф тоже работает, но я никогда не пробовал его на себе.
Загрузить Twisted и просмотрите исходный код. В них используются довольно продвинутые методы.
Google недавно выпустил онлайн-класс Python («класс» как «курс обучения»).
http://code.google.com/edu/languages/google-python-class/
Я знаю, что это не ответ на ваш полный вопрос, но я думаю, что это отличное место для начала!
Один из хороших способов расширить свои знания Python - это изучить исходный код библиотек, платформ и фреймворков, которые вы уже используете.
Например, если вы создаете сайт на Django , на многие вопросы, которые могут вас поставить в тупик, можно ответить, посмотрев, как Django реализует рассматриваемую функцию.
Таким образом вы продолжите подбирать новые идиомы, стили кодирования и трюки Python . (Некоторые из них будут хорошими, а некоторые - плохими.)
И когда вы увидите что-то Pythony, которое вы не понимаете в исходном коде, перейдите на канал IRC #python , и вы обнаружите множество «языковых юристов» с радостью объяснят.
Накопление этих небольших разъяснений за годы приводит к гораздо более глубокому пониманию языка и всех его входов и выходов.
Посмотрите эссе Питера Норвига о том, как стать мастером-программистом за 10 лет: http: // norvig .com / 21-days.html . Держу пари, что это верно для любого языка.
Поймите (более глубоко) типы данных Python и их роль в отношении управления памятью
Как известно некоторым из вас в сообществе, Я преподаю курсы Python , наиболее популярными из которых являются комплексный курс Intro + Intermediate, а также «продвинутый» курс, который знакомит с различными областями разработки приложений.
Довольно часто мне задают вопрос, похожий на такой: «Что мне следует пройти: ваш вводный или продвинутый курс? Я уже занимаюсь программированием Python в течение 1-2 лет, и я думаю, что вводный курс для меня слишком прост, поэтому Я бы хотел сразу перейти к продвинутому ... какой курс вы порекомендуете? »
Чтобы ответить на их вопрос, я исследую, насколько они сильны в этой области - не то чтобы это было действительно лучший способ измерить, готовы ли они к любому продвинутому курсу, но чтобы увидеть, насколько хорошо их базовые знания об объектах Python и модели памяти, что является причиной многих ошибок Python, написанных теми, кто не только новички, но и те, кто пошел дальше.
Для этого я указываю им на этот простой вопрос викторины из двух частей:
Часто они могут получить результат, но почему сложнее и, что гораздо важнее, ответ ... Я бы взвесил результат как 20% ответа, в то время как ответ «почему» получил 80% балла.Если они не могут понять почему, независимо от того, какой у них опыт работы с Python, я всегда буду направлять людей на комплексный вводный + промежуточный курс, потому что я провожу одну лекцию по объектам и управлению памятью до такой степени, что вы сможете ответить с помощью вывод и почему с достаточной уверенностью. (То, что вы знаете синтаксис Python через 1-2 года, не делает вас готовым выйти за рамки ярлыка «новичок» до тех пор, пока вы не намного лучше поймете, как Python работает скрытно.)
Дальнейшее исследование требовать подобный ответ еще сложнее, например,
Пример 3
x = ['foo', [1,2,3], 10.4]
y = list(x) # or x[:]
y[0] = 'fooooooo'
y[1][0] = 4
print x
print y
Следующие темы, которые я рекомендую, - это хорошее понимание подсчета ссылок, изучение того, что означает «интернирование» (но не обязательно его использование), изучение мелких и глубоких копий (как в Примере 3 выше), и, наконец, взаимосвязи между различными типами и конструкциями в языке, то есть списками и кортежами, словарями и наборами, представлениями списков и выражениями генератора, итераторами и генераторами и т. д .; однако все эти другие предложения - отдельная статья в другой раз. Надеюсь, это поможет тем временем! : -)
пс. Я согласен с другими отзывами о том, чтобы лучше познакомиться с интроспекцией, а также изучить исходный код других проектов и добавить сильный «+1» к обоим предложениям!
ппс. Кстати, отличный вопрос. Мне жаль, что я не был достаточно умен вначале, чтобы задать что-то подобное, но это было давно, и теперь я пытаюсь помочь другим с моим многолетним постоянным программированием на Python !!
Тщательно понять все типы и структуры данных
Для каждого типа и структуры напишите серия демонстрационных программ, которые проверяют каждый аспект типа или структуры данных. Если вы это сделаете, возможно, стоит записать в блог заметки по каждому из них ... это может быть полезно многим людям!
У вас уже есть много материала для чтения, но если вы справитесь с большим объемом, я рекомендую вам узнать об эволюции Python, прочитав Предложения по усовершенствованию Python, особенно «Готовые» PEP и «Отложенные , Брошенные, отозванные и отклоненные "ПДЛ".
Увидев, как изменился язык, какие решения были приняты и их обоснование, вы усвоите философию Python и поймете, как возникает «идиоматический Python».